Answers:
检查您的硬件和操作系统是否已正确配置和调整:
检查您的MySQL / InnoDB实例是否正确调整:
Load data infile
对于一系列插入,命令要快得多。select count(*) from table;
对于innodb而言,它比对myisam而言要慢得多。在我们的环境中,有一种情况,一种更新查询速度很慢。估计完成批处理时间为2天!!!在分析了慢查询日志后,我们发现这种类型的更新查询需要4秒钟才能完成。查询看起来像这样:
update table1 set field1=value1 where table1.field2=xx table2.field3=yy and table2.field4=zz
。在将更新查询转换为选择查询并运行说明之后,我们发现该查询不使用索引。创建适当的索引后,我们将更新查询的执行时间缩短到了几毫秒,并且整个工作在不到两个小时的时间内完成了。
一些有用的链接:
锁定问题将以中的连接状态为例 show full processlist;
通读my.cnf
和MySQL文档。有关配置选项的文档非常详尽。
一般来说,您希望在内存中尽可能多地进行处理。对于查询优化,这意味着避免使用临时表。正确应用索引。
调整将特定于您首选的数据库引擎和应用程序体系结构。互联网搜索已经存在大量资源。
打开Innodb监视器可以帮助确定锁定和死锁的原因:
InnoDB是一个非常不错的引擎。但是,它高度依赖于“调整”。一件事是,如果您的插入不是按增加主键的顺序进行,则innoDB所花的时间可能比MyISAM长。可以通过设置更高的innodb_buffer_pool_size来轻松克服。我的建议是将其设置为总RAM的60-70%。我现在正在生产中运行4台这样的服务器,每分钟插入约350万行。他们已经有将近3 TB的数据。InnoDB由于必须高度并发插入,因此必须为InnoDB。还有其他加快插入的方法。我已经对一些基准进行了基准测试。