当我使用innodb作为数据库引擎时,查询速度会变慢,有时需要20秒或更长时间。
我知道可以通过my.conf将innodb\u flush\u log\u at\u trx\u commit的值改为2来解决我的问题,我也想这样做,但是因为我共享了主机,所以他们不允许我这么做。
mysql版本:5.6.32-78.1
我还尝试了mysql查询
mysql> SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 1 |
+--------------------------------+-------+
1 row in set
我试过这个问题
mysql> SET GLOBAL innodb_flush_log_at_trx_commit=2;
但它也不允许我也因为我没有超级特权来执行这个动作。
我的数据库有25个表,4个表中有4000多条记录,而rest表中有100条以下的记录
那么有没有其他的解决方案来提高查询性能呢。?任何帮助都将不胜感激。
1条答案
按热度按时间gtlvzcf81#
使用profile检查每个步骤的成本时间;
set profiling=1;
运行您的查询;检查查询:
show profiles;
列出时间成本:show profile block io,cpu for query N;
找到高的台阶Duration
就像这样可能的问题:索引、排序方式、文件排序、使用临时表。。