繁体   English   中英

提高MySQL性能-InnoDB

[英]Increasing MySQL Performance - InnoDB

我正在使用Linux CentOSMySQL ,直到现在,这是my.cnf的内容:

sql_mode="NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER"
max_connections = 750
max_connect_errors = 750
connect_timeout = 28800
max_allowed_packet = 500M
character_set_server = utf8
query_cache_size = 500M

我正在尝试使用该参数来提高MySQL性能,因为我阅读了其中一些已过时的参数,因此,我选择InnoDB作为引擎并尝试将其设置如下:

default_storage_engine = INNODB
innodb_buffer_pool_size=9G
innodb_buffer_pool_instances=64

因此,my.cnf的最终设置为:

sql_mode="NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER"
max_connections = 750
max_connect_errors = 750
connect_timeout = 28800
character_set_server = utf8
default_storage_engine = INNODB
innodb_buffer_pool_size=6G
innodb_buffer_pool_instances=64

但是最后,服务器过载了,没有使用所有可用内存( 3GB / 8GB,而不是我使用innodb_buffer_pool_size所期望的6GB / 8GB ),并且我必须重新启动MySQL服务才能恢复并规范服务状态。

我如何才能真正提高MySQL性能? 或您能给我哪些建议?

预先,谢谢。

尝试设置innodb_flush_log_at_trx_commit=2其他信息可以在这里找到https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit

query_cache_size = 500M性能。

对表的每次写入都会清除该表的QC中的所有条目。 对于大型QC,它的执行速度很慢。

50M是该设置的实际最大值。

QC正在从InnoDB的buffer_pool中夺走内存,在那可能会更有用。

如果计算机上没有其他应用程序,并且降低了QC,则8GB计算机上的buffer_pool的6G应该可以。 留意交换-这对于性能来说很糟糕。

另外,对于innodb_buffer_pool_instances仅建议使用6 innodb_buffer_pool_instances -建议每个实例1G。

connect_timeout涉及放弃建立连接,而不是放弃连接可以停留多长时间。 60以下是合理的。

但是...通常,不良的性能来自于不良的索引(尤其是在需要时缺少“复合”索引)以及将索引列隐藏在函数调用中(例如WHERE DATE(created_at) = '...' )。

因此,让我们看看哪些查询很慢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM