草庐IT

innodb_lock_wait_timeout

全部标签

mysql - 制作一个表innodb和分区会提高mysql的性能吗?

我有一个Myisam表,其中包含2列的复合唯一键和9000万条数据。现在我们面临内存和负载问题,通过网络后我计划包括分区并将该表更改为Innodb以获得更好的性能。但我有以下担忧:改用innodb会有很大的宕机时间,有没有可能把宕机时间降到最低?大多数选择查询都在我计划对其进行散列分区的键的特定列上,它会对另一个键列上的查询产生多大影响?这些变化是否会将性能提高到理论上提到的程度?对于这种情况有没有更好的解决方案。任何建议或经验都会有所帮助。我的查询很简单Select*fromTablewhereCol1="Value"从表中选择*,其中Col1="Value"和Col2IN(V1,V

php - 修复 Innodb Integrity 约束违规 : 1452

这个问题在这里已经有了答案:Foreignkeyconstrainterror1452inMySQL-Magentoimport(2个答案)关闭5年前。我可以使用什么Innodb查询来纠正以下问题?SQLSTATE[23000]:Integrityconstraintviolation:1452Cannotaddorupdateachildrow:aforeignkeyconstraintfails(mrvallar_magdb.catalog_product_entity_varchar,CONSTRAINTCATALOG_PRODUCT_ENTITY_VARCHAR_IBFK_3F

mysql - 如何使 InnoDB 表在服务器重启时不重置自动增量?

我的开发机器上运行着MySQL5.5.37。我使用innodb表。面临下一个问题-服务器重启后自动增量重置。找到autoinc_lock_mode,设置为0,但没有帮助。SHOWVARIABLES命令显示autoinc_lock_mode的值0。我的工作:selectmax(id)fromtablex;//11,autoincrementis12insertintotablexvalues('foo');selectmax(id)fromtablex;//12,autoincrementis13deletefromtablexwhereid>11;//autoincrementis13

php - 防止 InnoDB 在 DUPLICATE KEY 上自动递增

我目前遇到主键ID设置为autoincrement的问题。它不断增加ONDUPLICATEKEY。例如:ID|field1|field21|user|value5|secondUser|value86|thirdUser|value从上面的描述中,您会注意到我在该表中有3个输入,但由于每次更新时自动递增,第三个输入的ID为86。有什么办法可以避免这种情况吗?这是我的mySQL查询的样子:INSERTINTOtable(field1,field2)VALUES(:value1,:value2)ONDUPLICATEKEYUPDATEfield1=:value1,field2=:value

mysql - 从具有 30m 记录的 MySQL InnoDB 表中删除 10m 记录大约需要多长时间?

我正在使用查询删除表中大约1/3的记录:DELETEFROM`abc`LIMIT10680000;查询出现在进程列表中,状态为“正在更新”。总共有30m条记录。该表有5列和两个索引,当转储到SQL时文件大约9GB。这是MySQL中唯一的数据库和表。这是在具有2GB内存、3GHz四核处理器和快速SAS磁盘的机器上运行的。除此DELETE操作外,MySQL不执行任何读取或写入操作。机器上没有其他“繁重”的进程在运行。此查询已运行2个多小时--我预计需要多长时间?感谢您的帮助!我是MySQL的新手,所以任何关于运行此查询时“幕后”发生的事情的花絮都非常感谢。如果我可以提供任何其他相关信息,请

mysql - 是否应该始终将主键添加到 innodb 表中?

我有一些只有2个int列的innoDbs,它们是其他表的主键的外键。例如一个表是user_items,它有2列,userId,itemId,都是用户和项目表的外键,如果更新或删除则设置为级联。我应该向此类表添加第3列并将其设为主键,还是就性能或任何其他优势而言,现在的方式更好? 最佳答案 仅仅为了添加一个ID列而添加第三个ID列是没有意义的。事实上,当您插入或删除行时,它只是增加了处理开销(索引维护)。主键不一定是“ID列”。如果你只允许用户和项目之间的单一关联(一个用户不能被分配两次相同的项目)那么定义(userid,itemid

mysql - MySQL系统数据库表可以转换为InnoDB吗?

我最近安装了MySQL5.5。我使用InnoDB作为我所有数据库的引擎。我注意到mysql数据库默认及其所有表(用户、数据库等)都是MyISAM。他们有什么理由不能/不应该是InnoDB吗?有谁知道MySQL是否要求mysql数据库是MyISAM? 最佳答案 警告不要将mysql数据库中的MySQL系统表从MyISAM转换为InnoDB表!这是不受支持的操作。如果这样做,MySQL不会重新启动,直到您从备份中恢复旧系统表或使用mysql_install_db脚本重新生成它们。http://dev.mysql.com/doc/refm

mysql - 大主键 : 1+ billion rows MySQL + InnoDB?

我想知道InnoDB是否是格式化表的最佳方式?该表包含一个字段,主键,并且该表每天将获得816k行(估计值)。这将很快变得非常大!我正在研究一种文件存储方式(这样会更快吗)?该表将存储已处理的TwitterID的ID号?此外,SELECTmin('id')语句的任何估计内存使用情况?非常感谢任何其他想法! 最佳答案 我建议您开始partioning你的table按ID或日期。分区根据一些定义的逻辑将一个大表拆分成几个较小的表(比如按日期范围拆分),这使得它们在性能和内存方面更易于管理。MySQL5.1内置了此功能,您也可以使用自定义

mysql - 为什么 MySQL 会给 InnoDB 表添加注释?

当使用phpMyAdmin或MySQLGUI工具时,每当我创建一个InnoDB表时,它都会像这样向表添加注释:InnoDBfree:9216kB这是什么意思?它有什么用? 最佳答案 InnoDB每个文件存储许多表。在那个InnoDB数据文件中,可以有空闲空间:当您删除表或索引、删除行或用更小的行(例如,更短的TEXT)替换行时文件每次增长nMB(在my.cnf中配置)注释只是告诉您InnoDB数据文件中有多少可用空间。当接近0时,InnoDB将扩展数据文件。我相信默认分配block是10MB,所以这可能就是为什么您有将近10MB的空

mysql - Innodb 表的创建时间

来自INFORMATION_SCHEMA的“TABLES”表的CREATE_TIME列显示了我所有InnoDB表的相同CREATE_TIME。这意味着所有这些表都是在2010-03-2606:52:00和2010-03-2606:53:00之间创建的,而实际上它们是几个月前创建的。InnoDB表的CREATE_TABLE字段会自动更改吗? 最佳答案 对于InnoDB,INFORMATION_SCHEMA.TABLES中的CREATE_TIME值基于表的FRM文件的修改时间。因此,这很可能代表您上次运行ALTERTABLE或OPTIM