mma*_*tax 15 mysql performance innodb
这个问题也可能在 StackOverflow 上被问到,但我会先在这里尝试......
我们数据库中 INSERT 和 UPDATE 语句的性能似乎正在降低并导致我们的 Web 应用程序性能不佳。
表是 InnoDB 并且应用程序使用事务。是否有任何简单的调整可以加快速度?
我想我们可能会看到一些锁定问题,我怎样才能找到?
sum*_*mar 25
检查您的硬件和操作系统是否已正确配置和调整:
检查您的 MySQL/InnoDB 实例是否已正确调整:
Load data infile命令对于一系列插入要快得多。select count(*) from table;innodb 比 myisam 慢得多。在我们的环境中,我们遇到过一种类型的更新查询很慢的情况。完成批处理作业的预计时间为 2 天!!!分析slowquery log后发现,这种类型的更新查询需要4秒才能完成。查询是这样的:
update table1 set field1=value1 where table1.field2=xx table2.field3=yy and table2.field4=zz。在将更新查询转换为选择查询并在该选择查询上运行解释后,我们发现这种类型的查询不使用索引。创建适当的索引后,我们将更新查询的执行时间减少到几毫秒,整个工作在不到两个小时的时间内完成。
一些有用的链接:
小智 5
使用默认的 innoDB 配置,您将受限于将事务写入和刷新到磁盘的速度。如果您可以处理丢失一点 ACID,请尝试使用 innodb_flush_log_at_trx_commit。设置为 0 以大约每秒写入日志并将其刷新到磁盘。设置为 1(默认)以在每次提交时写入和刷新。设置为 2 以在每次提交后写入日志文件,但每秒仅刷新一次。
如果您可以处理丢失 1s 的事务,这可能是极大提高写入性能的好方法。
另外,请注意您的磁盘在做什么。RAID 10 > RAID 5 用于以额外磁盘为代价的写入。
锁定问题将通过以下连接状态来举例说明show full processlist;
通读my.cnf和 MySQL 文档。配置选项有很好的文档记录。
一般来说,您希望尽可能多的内容在内存中进行处理。对于查询优化,这意味着避免使用临时表。正确应用指标。
调整将针对您首选的数据库引擎和应用程序架构。通过互联网搜索就可以找到大量资源。
| 归档时间: |
|
| 查看次数: |
54036 次 |
| 最近记录: |