MySQL數(shù)據(jù)庫中對前端和后臺進行系統(tǒng)優(yōu)化

字號:

本文中介紹的系統(tǒng)優(yōu)化,主要針對前端和后臺這兩方面(后臺方面主要對SQL語句和數(shù)據(jù)存儲進行了優(yōu)化),下文中我們將介紹一些優(yōu)化技巧和經(jīng)驗。
    技巧:
    1. 如何查出效率低的語句?
    在MySQL下,在啟動參數(shù)中設置 --log-slow-queries=[文件名],就可以在指定的日志文件中記錄執(zhí)行時間超過long_query_time(缺省為10秒)的SQL語句。你也可以在啟動配置文件中修改long query的時間,如:
    # Set long query time to 8 seconds
    long_query_time=8
    2. 如何查詢某表的索引?
    可使用SHOW INDEX語句,如:
    SHOW INDEX FROM [表名]
    3. 如何查詢某條語句的索引使用情況?
    可用EXPLAIN語句來看一下某條SELECT語句的索引使用情況。如果是UPDATE或DELETE語句,需要先轉(zhuǎn)換為SELECT語句。
    4. 如何把導出INNODB引擎的內(nèi)容到錯誤日志文件中?
    我們可以使用SHOW INNODB STATUS命令來查看INNODB引擎的很多有用的信息,如當前進程、事務、外鍵錯誤、死鎖問題和其它一些統(tǒng)計數(shù)據(jù)。如何讓該信息能記錄在日志文件中 呢?只要使用如下語句創(chuàng)建innodb_monitor表,MySQL就會每15秒鐘把該系統(tǒng)寫入到錯誤日志文件中:
    CREATE TABLE innodb_monitor (a INT) ENGINE=INNODB;
    如果你不再需要導出到錯誤日志文件,只要刪除該表即可:
    DROP TABLE innodb_monitor;
    5. 如何定期刪除龐大的日志文件?
    只要在啟動配置文件中設置日志過期時間即可:
    expire_logs_days=10
    注意事項:
    1. 重點關注索引
    下面以表TSK_TASK表為例說明SQL語句優(yōu)化過程。TSK_TASK表用于保存系統(tǒng)監(jiān)測任務,相關字段及索引如下:
    ID:主鍵;
    MON_TIME:監(jiān)測時間;建了索引;
    STATUS_ID:任務狀態(tài);與SYS_HIER_INFO.ID建立了外鍵關系。
    注MySQL自動會為外鍵建立索引,在本次優(yōu)化過程中,發(fā)現(xiàn)這些自動建立的外鍵索引會對SQL語句的效率產(chǎn)生不必要的干擾,需要特別注意!