簡體   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