站長資訊網
        最全最豐富的資訊網站

        MySQL怎么優化性能?優化技巧分享

        MySQL怎么優化性能?優化技巧分享

        程序員必備接口測試調試工具:立即使用
        Apipost = Postman + Swagger + Mock + Jmeter
        Api設計、調試、文檔、自動化測試工具
        后端、前端、測試,同時在線協作,內容實時同步

        當談到數據庫性能優化時,最重要的事情就是選擇正確的。你應該決定你的應用程序是需要關系型數據庫還是非關系型數據庫。即使在一種類型中,你也將有多種選擇。 與關系數據庫一樣,你可能會發現 Oracle、MySQL、SQL Server 和 PostgreSQL。 另一方面,非關系型數據庫引入了 MongoDB、Cassandra 和 CouchDB。

        你可能希望我建議使用非關系數據庫以獲得更快的讀/寫性能。 但是,通過一些改進和調整,您可以推動關系數據庫超出其已知限制。 因此,在本文中,我將向您介紹一些技巧,以使您的 MySQL 數據庫更快。

        如果您特別想知道為什么要使用 MySQL,那么答案很簡單,因為它是免費的、開源的,并且在 PHP 社區中非常受歡迎,而 Oracle 因價格昂貴而未被廣泛使用。 其他選項不如 MySQL 受歡迎。

        MySQL服務器配置:

        好吧,首先你應該知道配置文件的位置,具體取決于你的操作系統。在 Linux 系統中,它位于“/etc/mysql/my.cnf”中。
        現在是時候選擇你的引擎 InnoDB 和 MyISAM 了。為了讓選擇更容易,你應該知道 InnoDB 成為 MySQL 5.5 的默認引擎,因為它支持“行級鎖定、外鍵和事務”,而 MyISAM 不支持任何提到的特性,這使得它在現代很少有用應用程序。
        選擇正確的引擎后,是時候在 my.cnf 文件中設置一些配置變量了。

        max_connection 變量:

        max_connection 變量表示應用程序允許的連接數。默認值為 151 連接,但是,如果你收到錯誤消息“MySQL 錯誤,連接太多…”,你可以輕松增加此數量

        最大連接數 = 170

        innodb_buffer_pool_size 變量:

        為了加快速度,MySQL 會將數據緩存在你的服務器內存中,這個變量告訴 MySQL 它可以使用多少 GigaBytes。如果你在數據庫中保存大 blob,此變量非常有用。你可以將其設置為服務器內存的 80–90%。因此,如果你的服務器內存為 16GB,則可以將其設置為 14GB。

        innodb_buffer_pool_size = 14GB

        innodb_io_capacity 變量:

        這個變量告訴 MySQL 它可以使用多少輸入/輸出操作,它取決于你的磁盤。例如,單個 7200 RPM 驅動器限制為 200 I/O,而企業 SSD 磁盤限制為 50,000 I/O。你可以在操作系統上通過命令行輕松找到輸入/輸出值,并將變量設置為可用 I/O 的 90%,因此 MySQL 永遠不會使用太多 I/O 操作。

        innodb_io_capacity = 21000

        query_cache_limit 和 query_cache_size 變量:

        MySQL 也支持內存中緩存數據,但是我們不能依賴它來做緩存系統,因為每次你的程序向數據庫表寫入數據的時候,MySQL 將會重建整個表的查詢緩存。因此如果你的程序有很高的負載,MySQL 緩存將完全無用,這種情況下,兩個變量最好設置為0,節省MySQL緩存的開銷,相反,你可以使用類似 Redis 的東西來管理緩存。

        query_cache_limit = 0  query_cache_size = 0

        慢查詢日志:

        慢查詢日志將會顯示你的哪些查詢超過你定義的閾值,而不需要猜測哪個查詢更慢。
        首先,你必須在你的配置文件中啟用 slow_query_log 。在Linux服務器中,打開 「/etc/mysql/my.cnf」或者你系統上同等的文件。
        并添加:

        slow_query_log = 1  long_query_time = 1

        那么,這兩個選項將啟用慢查詢日志,并記錄任何需要超過一秒的查詢。如果你喜歡在一個表中而不是在一個文件中查看日志,你可以添加:

        log_output = 'TABLE'

        然后你可以在「slow_log」表中找到你的日志。你可以在那里看到所有執行超過一秒的慢查詢的信息。這些信息包括查詢的確切執行時間和受影響的行數,以及哪個用戶執行的它。

        查詢優化

        在你得到所有的慢查詢后,你需要一種方式來優化它們,使它們更快。因此,你可以在查詢語句前面加上「explain」關鍵詞,從而獲得相關查詢的詳情信息,例如:explain select * from users where active=1;

        「解釋」關鍵字可以幫助你定義查詢命中哪些索引以及為獲取數據而查詢的行數。此信息可以告訴你是否需要創建

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲精品国产高清不卡在线| 99精品视频在线观看| 国产精品区免费视频| 亚洲国产精品综合久久网络| www亚洲欲色成人久久精品| 国产成人精品久久免费动漫| 亚洲av永久无码精品国产精品| 九九久久精品无码专区| 国产精品免费观看视频| 国产精品天天影视久久综合网| 久久精品国产亚洲AV香蕉| 亚洲精品国自产拍在线观看| 国产亚洲精品高清在线| 99亚洲精品视频| 亚洲精品电影网| 精品少妇一区二区三区视频| 99久久久精品| 成人精品视频在线观看| 国产精品无码无需播放器| 麻豆国产在线精品国偷产拍| 亚洲精品乱码久久久久久按摩| 日批日出水久久亚洲精品tv| 蜜桃麻豆www久久国产精品| 精品国产亚洲男女在线线电影 | 777被窝午夜精品影院| 日韩精品一区二区三区大桥未久| 精品久久香蕉国产线看观看亚洲| 青青草国产精品久久久久| 欧洲精品视频在线观看| 国产成人毛片亚洲精品| 国产成人精品高清不卡在线| 国产精品小黄鸭一区二区三区| 国产人成精品综合欧美成人| 精品久久综合1区2区3区激情 | 2021国产成人精品国产| 99精品久久精品一区二区| 久久国产精品-国产精品| 国产精品女同一区二区久久| 久久精品无码一区二区app| 在线亚洲欧美中文精品| 久久精品国产99久久无毒不卡|