mysql-5.7 持久化統計信息詳解

一、持久化統計信息的意義:

  統計信息用于指導mysql生成執行計劃,執行計劃的準確與否直接影響到SQL的執行效率;如果mysql一重啟

  之前的統計信息就沒有了,那么當SQL語句來臨時,那么mysql就要收集統計信息然后再生成SQL語句的執行

  計劃。如果能在關閉mysql的時候就把統計信息保存起來,那么在啟動時就不要再收集一次了,這種處理方式

  有助于效率的提升。

 

?

二、統計信息準確與否也同樣重要:

  第一目中我們說明了“持久化統計信息的意義”,我們的假設統計信息是有用的,是準確的;如果統計信息本身

  已經過時了,比如說統計信息是在表中只有100行時統計出來的,這種情況下往往走全表掃描開銷會更小,但是

  呢! 現在表中的行數已經達到了100萬行,明顯這種過時的統計信息會引發性能災難,所以統計信息的時效性也

  是同樣重要的。那mysql它什么時候自動更新統計信息呢?默認情況下當表中的數據有10%被修改過的就會更新。

?

?

三、mysql對統計信息的處理:

  針對上面的兩個問題mysql都有給出解決方案,并且都可能通過簡單的配置來解決

  1、針對是否持久化統計信息mysql可以通過innodb_stats_persistent參數來控制

  2、針對統計信息的時效性,mysql通過innodb_stats_auto_recalc參數來控制是否自動更新

  3、針對統計信息的準確性,mysql通過innodb_stats_persistent_sample_pages 參數來控制更新

  統計信息時的采樣,樣本頁面的數量。

[mysqld]
innodb_stats_persistent=1
innodb_stats_auto_recalc=1
innodb_stats_persistent_sample_pages=20

?

四、手動更新統計信息的方式:

  mysql通過analyze table 語句來手動的更新統計信息

?

五、查看表的統計信息是什么時候更新的:

  mysql把統計信息相關的內容記錄在mysql.innodb_table_stats ,mysql.innodb_index_stats 這兩張表里面。

  mysql.innodb_table_stats以表為單位記錄著統計信息

mysql> select * from innodb_table_stats;
+---------------+----------------------------+---------------------+--------+----------------------+--------------------------+
| database_name | table_name                 | last_update         | n_rows | clustered_index_size | sum_of_other_index_sizes |
+---------------+----------------------------+---------------------+--------+----------------------+--------------------------+
| fdb           | auth_group                 | 2017-08-10 14:36:40 |      0 |                    1 |                        1 |
| fdb           | auth_group_permissions     | 2017-08-10 14:36:41 |      0 |                    1 |                        2 |
| fdb           | auth_permission            | 2017-08-10 14:36:41 |     30 |                    1 |                        1 |
| fdb           | auth_user                  | 2017-08-10 14:36:41 |      0 |                    1 |                        1 |
| fdb           | auth_user_groups           | 2017-08-10 14:36:41 |      0 |                    1 |                        2 |
| fdb           | auth_user_user_permissions | 2017-08-10 14:36:41 |      0 |                    1 |                        2 |
| fdb           | cninfo_company             | 2017-08-10 14:36:58 |   4996 |                  161 |                        6 |
| fdb           | csindex_indexdetail        | 2017-09-17 14:04:27 |      0 |                    1 |                        0 |
| fdb           | csindex_indexoverview      | 2017-09-01 12:44:18 |     11 |                    1 |                        0 |
| fdb           | django_admin_log           | 2017-08-10 14:36:47 |      0 |                    1 |                        2 |
| fdb           | django_content_type        | 2017-08-10 14:36:47 |     10 |                    1 |                        1 |
| fdb           | django_migrations          | 2017-09-04 14:04:09 |     37 |                    1 |                        0 |
| fdb           | django_session             | 2017-08-10 14:36:47 |      0 |                    1 |                        1 |
| fdb           | glod_glodprice             | 2017-08-10 14:36:48 |   2271 |                   10 |                        0 |
| fdb           | pbc_moneysupply            | 2017-08-10 14:37:08 |     78 |                    1 |                        0 |
| fdb           | shibor_shiborrate          | 2017-08-10 14:37:18 |   2711 |                   14 |                        0 |
| fdb           | sse_marketoverview         | 2017-08-15 16:06:12 |      0 |                    1 |                        0 |
| mysql         | gtid_executed              | 2017-09-06 11:02:14 |      2 |                    1 |                        0 |
| sys           | sys_config                 | 2017-08-10 12:19:06 |      6 |                    1 |                        0 |
| tempdb        | person                     | 2017-09-14 11:18:15 |      1 |                    1 |                        0 |
| tmp           | t                          | 2017-08-15 11:06:18 |      2 |                    1 |                        0 |
+---------------+----------------------------+---------------------+--------+----------------------+--------------------------+
21 rows in set (0.00 sec)

  各個列所代表的意義:

  database_name        表所在的庫名

  table_name          表名

  last_update          最近一次的更新時間

  n_rows            表中的行數

  clustered_index_size      ?主鍵的大小

  sum_of_other_index_sizes   所有二級索引的大小

?

?

?六、一些在analyze table 過程中的經驗:

  如果我們用explan 語句查看SQL的執行計劃的時候發現,計劃走的不準,多半是由于統計信息過時引起的,這個

  時候就要執行一下analyze table 來重新生成一下執行計劃了;有時候可能發現重新生成執行計劃后并沒有什么用

  SQL還是走的不準,這個時候最可能的原因就是生成執行計劃時的采樣頁的數量太低了,innodb_stats_persistent_sample_pages

  這個參數的值,注意這個值也不要加的太大,要不然會老半天都執行不完analyze table 語句。

?

  

七、附加說明

  上文中說的mysql實際上指的只是Innodb這個引擎

?

----

-----------------------------------------------------------------------

?

轉載于:https://www.cnblogs.com/JiangLe/p/7535710.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253389.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253389.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253389.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于傳感器”英寸“計量

傳感器上的n是指對角線長度為16mm或18mm的n倍 以英寸代指的傳感器大小稱為靶面尺寸。 在CCD/CMOS出現之前,攝像機是利用一種叫作“光導攝像管(Vidicon Tube)”的成像器件感光成像的,這是一種特殊設計的電子管,其直徑的…

關于USB-AUDIO使用ALSA編程的一點問題

轉載自:http://blog.chinaunix.net/uid-25272011-id-3153434.html 最近在調試一款原相PAP7501攝像頭中的USB的麥克風,USB層走的應該是標準的UAC協議,具體可以見USB的官網:http://www.usb.org/developers/devclass_docs#approved&a…

讓input變成不可編輯狀態的方法

有時候&#xff0c;我們希望表單中的文本框是只讀的&#xff0c;讓用戶不能修改其中的信息&#xff0c;如使<input type"text" name"input1" value"中國"> 的內容&#xff0c;"中國"兩個字不可以修改。實現的方式歸納一下&#…

npm run dev 在本地調試出現跨域問題解決方法

npm run dev 在本地調試出現跨域問題 在localhost:8080調試時會出現跨域問題&#xff0c;如圖&#xff1a; 我的項目是用webpack作為前端自動化構建工具&#xff0c;可以在webpack-dev-server中配置跨域。webpack-dev-server是一個小型的nodejs服務器&#xff0c;是基于express…

alsa聲音編程介紹

http://blog.csdn.net/q553716434/article/details/7881552 period(周期):硬件中中斷間的間隔時間。它表示輸入延時。 聲卡接口中有一個指針來指示聲卡硬件緩存區中當前的讀寫位置。只要接口在運行&#xff0c;這個指針將循環地指向緩存區中的某個位置。 frame size sizeof(o…

五、python模塊以及包

模塊&#xff1a;編寫的別的程序中重用一些代碼。 1 模塊的寫法&#xff1a; 創建一個.py文件&#xff0c;該文件中包含函數與變量。使用撰寫python解釋器本身的本地語言來編寫模塊。比如使用C代碼編寫python模塊&#xff0c;并且在編譯后&#xff0c;可以通過標準的python解釋…

jeecg選擇按鈕帶入其他單據值

前端的標簽 <input class"inputxt" id"fshimian" name"fshimian" ignore"ignore" datatype"*" value"${shizhePage.fshimian}" /> <t:choose hiddenName"fshimian" hiddenid"fname"…

alsa編程

alsa 編程 分類&#xff1a; linux 2012-08-18 20:13 124人閱讀 評論(0) 收藏 舉報 編程parametersbufferloopsaccessplayback轉載自&#xff1a;http://blog.csdn.net/spygg/article/details/7824750 ALSA(Advanced Linux Sound Architecture)是由內核驅動,標準的API庫和一系…

Fiddler4入門——手機抓包

一、下載工具包 百度搜索”fiddler 下載“ &#xff0c;安裝最新版本 下載的軟件安裝包為“fiddler_4.6.20171.26113_setup.exe”格式&#xff0c;雙擊安裝。安裝成功&#xff0c;在“開始”-“所有程序”&#xff0c;就會看見這樣的圖標&#xff0c;若是常用的話&#xff0c;也…

Node.js Performance

https://blog.risingstack.com/node-js-performance-monitoring-with-prometheus/轉載于:https://www.cnblogs.com/skating/p/7544838.html

(五)DOM4j進行XML文件的解析及生成

DOM4j本身還是需要使用SAX建立解析器&#xff0c;然后通過文檔依次找到根節點&#xff0c;再通過根節點查找每一個節點的內容. 1.寫操作 import java.io.File;import java.io.FileOutputStream;import java.util.Iterator; import org.dom4j.Document;import org.dom4j.Documen…

Linux系統基礎.作業

要求以root用戶登錄系統&#xff0c;右擊桌面打開終端&#xff0c;查看當前登陸Linux系統所使用的用戶名 查看哪些用戶在系統上工作 修改當前時間為2018年8月26號11:28 查看2015年10月份日歷 使用兩種方法查看ls命令的使用說明 清除屏幕 ctrlL使用“useradd tom”命令新建tom用…

Alsa中PCM參數設置

分類&#xff1a; LINUX 1) PCM設備的句柄.2) 指定同時可供回放或截獲的PCM流的方向3) 提供一些關于我們想要使用的設置選項的信息,比如緩沖區大小,采樣率,PCM數據格式等4) 檢查硬件是否支持設置選項.4.1) 初始化PCM變量4.2) 分配hwparams結構4.3) 打開PCM設備4.4) 以聲卡的全部…

java5

java基礎&#xff08;五&#xff09;命名規則&#xff1a; 名字中只能包含->字母、_、數字、$&#xff0c;且開頭不能為數字包名必須都小寫文件名首字母和后面英文文件單詞首字母都要大寫變量和方法名 首字母小寫&#xff0c;后面英文單詞首字母大寫java中的方法&#xff1a…

最新歷史版本 :H.265

原來對264有深入的研究&#xff0c;現在想詳細了解下265啦&#xff0c;愿265盡快廣泛的使用起來&#xff0c;人們可以享受無處不在的視覺盛宴。 H.265是ITU-T VCEG 繼H.264之后所制定的新的視頻編碼標準。H.265標準圍繞著現有的視頻編碼標準H.264&#xff0c;保留原來的某些技術…

凱撒密碼、GDP格式化輸出、99乘法表

1.愷撒密碼的編碼 sinput(請輸入明文:) print(密文為:) for i in s:print(chr(ord(i)3),end)運行結果為&#xff1a; 2.國家名稱 GDP總量&#xff08;人民幣億元&#xff09; 中國 &#xffe5;765873.4375 澳大利亞 &#xffe5; 78312.4375 &#xff08;國家名稱左對齊&am…

【BZOJ3453】XLkxc [拉格朗日插值法]

XLkxc Time Limit: 20 Sec Memory Limit: 128 MB[Submit][Status][Discuss]Description 給定 k,a,n,d,p  f(i)1^k2^k3^k......i^k  g(x)f(1)f(2)f(3)....f(x)  求(g(a)g(ad)g(a2d)......g(and))mod p Input 第一行數據組數&#xff0c;(保證小于6)  以下每行四個整數 …

hive安裝

雷頓學院大數據雷頓學院大數據&#xff1a;http://www.leidun.site/hive安裝下載hivehttp://mirror.bit.edu.cn/apache/hive/下載后解壓配置命令將hive加入命令vim ~/.bash_profile添加如下命令export HIVE_HOME/usr/local/Cellar/hive/1.2.1/libexec保存文件mysql數據庫驅動cu…

JavaFX常用匯總

1. 描述備注 1.1 參考教程 博客 易百教程 JavaFX中國 1.5 安裝 a). 在線安裝e(fx)clipse插件 b). 下載安裝SceneBuilder c). eclipse重啟以后,windows->preference->javaFx->SceneBuilder executable選擇 上一步中安裝后的exe文件 2. 快速入門示例-MVC a). *.fxml文件…

Alsa驅動分析(轉)

1. Abstract 2. Introduction 3. 音頻驅動框架介紹 3.1 音頻設備的注冊 3.2 音頻驅動的注冊 3.2.1 Probe函數的調用 3.2.2 Soc_probe函數 4. 通常的使用流程的分析 4.1.1 open過程介紹 4.1.2 snd_pcm_hw_params流程分析 4.1.3 …