mysql 8 配置参数优化_mysql8 参考手册--配置非持久性优化器统计参数
本節介紹如何配置非持久性優化器統計信息。當innodb_stats_persistent=OFF或使用創建或更改單個表時,Optimizer統計信息不會保留在磁盤 上 STATS_PERSISTENT=0。相反,統計信息存儲在內存中,并且在服務器關閉時會丟失。統計信息還可以通過某些操作在特定條件下定期更新。
默認情況下,優化器統計信息會保留在磁盤上,并由innodb_stats_persistent 配置選項啟用。有關持久性優化器統計信息,請參見第15.8.10.1節“配置持久性優化器統計參數”。
優化器統計信息更新
非持久性優化器統計信息將在以下情況下更新:
運行中ANALYZE TABLE。
運行SHOW TABLE STATUS, SHOW INDEX或 在 啟用了該選項的情況下查詢 INFORMATION_SCHEMA.TABLES或 INFORMATION_SCHEMA.STATISTICS表 innodb_stats_on_metadata。
的默認設置 innodb_stats_on_metadata是 OFF。啟用 innodb_stats_on_metadata 可能會降低具有大量表或索引的架構的訪問速度,并降低涉及InnoDB 表的查詢的執行計劃的穩定性。 innodb_stats_on_metadata使用一條SET語句全局配置 。
SET GLOBAL innodb_stats_on_metadata=ON
注意
innodb_stats_on_metadata 僅當優化器統計信息配置為非持久性( innodb_stats_persistent 禁用時)時才適用 。
使用啟用的選項 啟動mysql客戶端 --auto-rehash,這是默認設置。該 auto-rehash選項將導致所有 InnoDB表被打開,并且打開表操作將導致統計信息被重新計算。
為了提高mysql 客戶端的啟動時間并更新統計信息,可以auto-rehash使用該 --disable-auto-rehash 選項將其關閉 。該auto-rehash 功能可為交互式用戶自動完成數據庫,表和列名稱的名稱命名。
首先打開一個表。
InnoDB 檢測到自上次更新統計信息以來,表的1/16已被修改。
配置采樣頁數
MySQL查詢優化器基于索引的相對選擇性,使用有關鍵分布的估計 統計信息來選擇執行計劃 的索引。當更新優化器統計信息,從表中的每個索引它的樣本的隨機頁面來估計 基數的指數。(這種技術被稱為 隨機潛水。) InnoDB
為了控制統計信息估計的質量(從而為查詢優化器提供更好的信息),您可以使用參數更改采樣頁數 innodb_stats_transient_sample_pages。默認的采樣頁數是8,可能不足以產生準確的估計值,從而導致查詢優化器的索引選擇不正確。對于大型表和聯接中使用的表,此技術尤其重要 。此類表的不必要的 全表掃描可能是一個嚴重的性能問題。有關調優此類查詢的提示,請參見 第8.2.1.23節“避免全表掃描”。 innodb_stats_transient_sample_pages 是可以在運行時設置的全局參數。
的值 innodb_stats_transient_sample_pages 影響InnoDB 時所有表和索引 的索引采樣innodb_stats_persistent=0。更改索引樣本大小時,請注意以下潛在的重大影響:
較小的值(例如1或2)可能會導致基數估計不準確。
增大該 innodb_stats_transient_sample_pages 值可能需要更多的磁盤讀取。大于8的值(例如100)會導致打開表或執行時間大大減慢SHOW TABLE STATUS。
優化器可能基于對索引選擇性的不同估計來選擇非常不同的查詢計劃。
無論哪種值對 innodb_stats_transient_sample_pages 系統最有效,請設置該選項并將其保留為該值。選擇一個可以對數據庫中的所有表進行合理準確估計的值,而無需過多的I / O。由于統計信息會在執行以外的其他時間自動重新計算 ANALYZE TABLE,因此增加索引樣本大小,運行ANALYZE TABLE并再次減小樣本大小沒有意義 。
較小的表通常比較大的表需要更少的索引樣本。如果您的數據庫有很多大表,則考慮使用innodb_stats_transient_sample_pages 比大多數情況下較小的表更高的值 。
總結
以上是生活随笔為你收集整理的mysql 8 配置参数优化_mysql8 参考手册--配置非持久性优化器统计参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DNF称号附魔宝珠有哪些
- 下一篇: 不知道怎么设置管理员权限需要管理员权限怎