Questions tagged «innodb»

InnoDB:MySQL的符合ACID的存储引擎

4
如何在一次选择中获得当前和下一个更大的值?
我有一个带有列的InnoDB表'idtimes'(MySQL 5.0.22-log) `id` int(11) NOT NULL, `time` int(20) NOT NULL, [...] 用复合唯一键 UNIQUE KEY `id_time` (`id`,`time`) 因此每个ID可以有多个时间戳,每个时间戳可以有多个ID。 我正在尝试建立一个查询,以获取所有条目以及每个条目的下一个较大时间(如果存在),因此它应返回例如: +-----+------------+------------+ | id | time | nexttime | +-----+------------+------------+ | 155 | 1300000000 | 1311111111 | | 155 | 1311111111 | 1322222222 | | 155 | 1322222222 | NULL | | 156 …
18 mysql  innodb  select 


3
MySQL InnoDB page_cleaner设置可能不是最佳的
在mysqld.log中看到此注释: [Note] InnoDB: page_cleaner: 1000ms intended loop took 15888ms. The settings might not be optimal. (flushed=200 and evicted=0, during the time.) 似乎在这里提到了这样的事情: MySQL实例停滞“正在执行SYNC索引” 我的问题是:如果在日志中看到此注释,应该采取什么措施(如果有)? MySQL和OS版本: mysql-community-server- 5.7.9 -1.el7.x86_64 centos-release-7-1.1503.el7.centos.2.8.x86_64 运行显示变量,例如“ innodb%”;如建议显示: innodb_page_cleaners | 1

3
“将来”是否有更好的方法退出MySQL InnoDB日志?
我在MySQL 5.0中遇到此InnoDB错误。Mysqld干净地停止了,但是后来我设法丢失了ib_logfile0和ib_logfile1。现在,在干净启动之后,InnoDB已经完成了“崩溃恢复”。我经历了innodb_force_recovery = 4业务,修复了一个挂起的MyISAM表,除此之外,现在可以进行复制了。大数字表示: 111116 15:49:36 InnoDB: Error: page 393457 log sequence number 111 561,760,232 InnoDB: is in the future! Current system log sequence number 70 3,946,969,851. InnoDB: Your database may be corrupt or you may have copied the InnoDB InnoDB: tablespace but not the InnoDB log files. See InnoDB: …
16 mysql  innodb 

2
从MyISAM在线转换为InnoDB后缺少行
我们有一个相当小的数据库,我们希望将其从MyISAM转换为InnoDB。作为数据库新手,我们甚至在不关闭站点的情况下进行了转换(使用alter table)。 现在,转换已完成,似乎缺少许多间歇行。这可能是由于转换期间的操作造成的吗?还是这个问题在其他地方?
16 mysql  innodb  myisam 

2
无法破译innodb状态日志中的死锁
我们正在从Microsoft ADO.NET连接器访问MySQL。 有时,我们在innodb状态中看到以下死锁,并且无法确定问题的原因。看起来事务(2)正在等待并持有相同的锁? ------------------------ LATEST DETECTED DEADLOCK ------------------------ 110606 5:35:09 *** (1) TRANSACTION: TRANSACTION 0 45321452, ACTIVE 0 sec, OS thread id 3804 starting index read mysql tables in use 1, locked 1 LOCK WAIT 2 lock struct(s), heap size 368, 1 row lock(s) MySQL thread id 84, query id …

5
当禁用查询缓存时,为什么MySQL线程经常显示“正在释放项目”状态?
当我运行时SHOW PROCESSLIST,通常在“正在释放项目”状态下有大量的INSERT / UPDATE线程。 MySQL手册建议线程处于这种状态的原因至少有一部分涉及查询缓存-大概由于数据更改,它会使缓存的查询无效。 但是,将my query_cache_size设置为0会完全禁用查询缓存。 在这种状态下会有这么多线程还有什么其他原因? 相关表使用InnoDB存储引擎。
16 mysql  innodb 

2
索引是否必须覆盖所有选定的列才能用于ORDER BY?
在SO上,最近有人问为什么不使用ORDER BY? 这种情况涉及MySQL中的一个简单的InnoDB表,该表包含三列和1万行。其中一列(整数)被索引了,OP试图检索按该列排序的整个表: SELECT * FROM person ORDER BY age 他附加了EXPLAIN输出,该输出显示此查询是使用filesort(而不是索引)解决的,并询问为什么会这样。 尽管有提示 FORCE INDEX FOR ORDER BY (age) 导致使用索引的提示,但有人回答(带有支持的注释/来自他人的评论)说,仅当从索引中读取所有选定的列时,索引才用于排序(即通常由Using index该Extra列中的指示)的EXPLAIN输出)。稍后给出了一个解释,即遍历索引然后从表中获取列会导致随机I / O,MySQL认为它比a更昂贵filesort。 这似乎是在关于ORDER BY优化的手册一章中碰到的,它不仅传达出强烈的印象,即ORDER BY从索引满足比执行其他排序更可取(实际上,它filesort是quicksort和mergesort的组合,因此 必须具有下限;虽然应该按顺序遍历索引并查找表,所以这很有意义),但它也忽略了此所谓的“优化”,同时还指出:Ω(nlog n)O(n) 以下查询使用索引来解析ORDER BY零件: SELECT * FROM t1 ORDER BY key_part1,key_part2,... ; 就我的阅读而言,在这种情况下就是这种情况(但没有明确提示就没有使用索引)。 我的问题是: 确实有必要为所有选定的列建立索引以便MySQL选择使用索引吗? 如果是这样,在哪里记录(如果有的话)? 如果没有,这里发生了什么?
15 mysql  index  innodb  order-by 

1
从ibd文件中没有ibdata1的数据文件夹中恢复MySQL数据库
我的WAMP目录意外地被另一个用户删除。MySQL中仅数据文件夹可用。并且,因为只有数据库文件夹(带有数据库名称的“ \ bin \ mysql \ mysql5.6.12 \ data \”中的文件夹)可用。“ \ bin \ mysql \ mysql5.6.12 \ data \”的根目录中包括“ ibdata1 ”的所有文件也将被删除。 数据库文件夹仅包含具有以下扩展名的文件。 * .frm,*。ibd 和“ db.opt”文件。 如何恢复数据库? 我已经尝试恢复bdata1。但是,无法取回它。并且,某些数据库也包含MYISAM。


3
为什么MySQL甚至对这个顺序强制也忽略索引?
我运行EXPLAIN: mysql> explain select last_name from employees order by last_name; +----+-------------+-----------+------+---------------+------+---------+------+-------+----------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-----------+------+---------------+------+---------+------+-------+----------------+ | 1 | SIMPLE | employees | ALL | NULL | NULL | NULL | NULL | …

2
从InnoDB表中删除和回收空间
我有一个700GB的InnoDB表,我不会再写入任何数据(只能读取)。我想删除它保存的旧数据并回收该磁盘空间(因为我快用完了)。删除部分非常简单,因为我有一个自动增量主索引,因此我可以使用它对块进行迭代,然后删除行,但这不会让我退缩。我认为OPTIMIZE TABLE会,但是在700GB的桌子上可能会永远占用,所以我有没有忽略其他选择? 由RolandoMySQLDBA编辑 假设您的表是mydb.mytable,请运行以下查询并将其发布在此处,以便您确定表收缩所需的磁盘空间: SELECT FORMAT(dat/POWER(1024,3),2) datsize, FORMAT(ndx/POWER(1024,3),2) ndxsize, FORMAT((dat+ndx)/POWER(1024,3),2) tblsize FROM (SELECT data_length dat,index_length ndx FROM information_schema.tables WHERE table_schema='mydb' AND table_name='mytable') A; 如果允许,我们还需要查看表结构。 由Noam编辑 这是查询的输出: datsize ndxsize tblsize 682.51 47.57 730.08 这是表格结构(SHOW CREATE TABLE) `CREATE TABLE `mybigtable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL, `created_at` datetime …
14 mysql  innodb 

4
在使用InnoDB引擎输入数次演出后,MySQL LOAD DATA INFILE速度降低了80%
我正在通过LOAD DATA INFILE加载100GB文件。我在MyISAM上取得了成功,几个小时就完成了。 我现在正在尝试使用InnoDB。负载以超过10MB / sec的速度快速启动(监视表文件的增长file_per_table是否已打开)。 但是,在大约5GB的数据传输之后,它会降低到2-4MB /秒的范围,而当我超过20GB时,它的传输速度会降低到2MB /秒左右。 InnoDB缓冲池的大小为8G。在运行LOAD DATA INFILE命令之前,我已经完成了以下操作: SET @@session.sql_log_bin=0; SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0; alter table item_load disable keys; //Run LOAD DATA INFILE.... 我看不出它启动良好并随着时间的推移变慢的原因。 另外,使用相同的设置,我使用InnoDB和MyISAM和5GB测试数据集对表运行了相同的LOAD DATA INFILE命令,MyISAM快20倍: InnoDB: mysql> LOAD DATA CONCURRENT LOCAL INFILE '/tmp/item' REPLACE INTO TABLE item_load; Query OK, 2630886 rows affected, …

5
MySQL服务器已经消失,阻碍了大型转储的导入
我正在尝试将大型SQL转储(2GB)导入到我的Mac上的本地mysql中。我过去已经能够执行此操作(我正在使用MAMP),但是现在在第7758行出现ERROR 2006(HY000):每次尝试导入转储时,MySQL服务器都消失了。该数据库包含innodb表。 我尝试将my-innodb-heavy-4G.cnf文件复制到my.cnf中,以查看这些设置是否有帮助,但是没有运气。 有什么想法要调整吗? 我正在从此处使用“ Mac OS X版本10.6(x86,64位),DMG存档”:http : //dev.mysql.com/downloads/mysql/
14 mysql  innodb  dump  mac-os-x 

3
在具有索引列的大表上使用ALTER TABLE
我有一个带有VARCHAR(20)列的大表,我需要对其进行修改以成为VARCHAR(50)列。通常,在此特定表上执行ALTER TABLE(添加TINYINT)大约需要90-120分钟才能完成,因此,我实际上只能在周六或周日晚上这样做,以免影响数据库的用户。如果可能的话,我想在此之前进行此修改。 该列也已建立索引,我认为这会使ALTER TABLE变慢,因为它必须在修改列长后重建索引。 该Web应用程序是在MySQL复制环境中设置的(26个从属和一个主控)。我记得曾经读过某个地方的一种方法,即首先在每个从属服务器上执行ALTER TABLE(对用户的影响最小),然后在主服务器上执行此操作,但是那不是然后尝试将ALTER TABLE命令复制到从属服务器吗? 所以我的问题是:对我来说,以最小的用户干扰来修改此表的最佳方法是什么? 编辑:该表是InnoDB。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.