中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣分析數據庫緩沖池與SQL查詢成本

發布時間:2021-12-02 11:28:48 來源:億速云 閱讀:152 作者:柒染 欄目:大數據

本篇文章給大家分享的是有關怎樣分析數據庫緩沖池與SQL查詢成本,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

數據庫緩沖池

磁盤 I/O 需要消耗的時間很多,而在內存中進行操作,效率則會高很多,為了能讓數據表或者索引中的數據隨時被我們所用,DBMS 會申請占用內存來作為數據緩沖池,這樣做的好處是可以讓磁盤活動最小化,從而減少與磁盤直接進行 I/O 的時間。要知道,這種策略對提升 SQL 語句的查詢性能來說至關重要。如果索引的數據在緩沖池里,那么訪問的成本就會降低很多。

 那么緩沖池如何讀取數據呢?

緩沖池管理器會盡量將經常使用的數據保存起來,在數據庫進行頁面讀操作的時候,首先會判斷該頁面是否在緩沖池中,如果存在就直接讀取,如果不存在,就會通過內存或磁盤將頁面存放到緩沖池中再進行讀取。

查看緩沖池大小

如果使用的是 MyISAM 存儲引擎(只緩存索引,不緩存數據),對應的鍵緩存參數為 key_buffer_size,可以用它進行查看。

如果使用的是 InnoDB 存儲引擎,可以通過查看 innodb_buffer_pool_size 變量來查看緩沖池的大小,命令如下:

mysql> show variables like 'innodb_buffer_pool_size';
 

怎樣分析數據庫緩沖池與SQL查詢成本

此時 InnoDB 的緩沖池大小只有 8388608/1024/1024=8MB,我們可以修改緩沖池大小為 128MB,方法如下:  
mysql> set global innodb_buffer_pool_size = 1073741824;
 

在 InnoDB 存儲引擎中,可以同時開啟多個緩沖池,查看緩沖池的個數,使用命令:

mysql> show variables like 'innodb_buffer_pool_instances'; 
 

怎樣分析數據庫緩沖池與SQL查詢成本

 只有一個緩沖池。實際上innodb_buffer_pool_instances默認情況下為 8,為什么只顯示只有一個呢?這里需要說明的是,如果想要開啟多個緩沖池,你首先需要將innodb_buffer_pool_size參數設置為大于等于 1GB,這時innodb_buffer_pool_instances才會大于 1。你可以在 MySQL 的配置文件中對innodb_buffer_pool_size進行設置,大于等于 1GB,然后再針對innodb_buffer_pool_instances參數進行修改。    

查看SQL語句的查詢成本

 一條 SQL 查詢語句在執行前需要確定查詢計劃,如果存在多種查詢計劃的話,MySQL 會計算每個查詢計劃所需要的成本,從中選擇成本最小的一個作為最終執行的查詢計劃。

如果查看某條 SQL 語句的查詢成本,可以在執行完這條 SQL 語句之后,通過查看當前會話中的 last_query_cost 變量值來得到當前查詢的成本。這個查詢成本對應的是 SQL 語句所需要讀取的頁(page)的數量。

mysql> show status like 'last_query_cost'
 

example  

mysql> select userid,rating from movierating where userid = 4169;
 

結果:2313 rows in set (0.05 sec)

mysql> show status like 'last_query_cost'; 
 

怎樣分析數據庫緩沖池與SQL查詢成本

mysql> select userid,rating from movierating where userid between 4168 and 4175; 
 

結果:2643 rows in set (0.01 sec)

mysql> show status like 'last_query_cost';
 

怎樣分析數據庫緩沖池與SQL查詢成本

你能看到頁的數量是剛才的 1.4 倍,但是查詢的效率并沒有明顯的變化,實際上這兩個 SQL 查詢的時間基本上一樣,就是因為采用了順序讀取的方式將頁面一次性加載到緩沖池中,然后再進行查找。雖然頁數量(last_query_cost)增加了不少,但是通過緩沖池的機制,并沒有增加多少查詢時間。

以上就是怎樣分析數據庫緩沖池與SQL查詢成本,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

津市市| 额敏县| 微博| 衢州市| 石泉县| 西宁市| 兰坪| 建水县| 屯昌县| 万宁市| 深泽县| 西贡区| 宜春市| 武乡县| 贵德县| 渑池县| 宁陕县| 金秀| 宁海县| 邵阳县| 辛集市| 徐汇区| 合作市| 柯坪县| 广丰县| 霞浦县| 民丰县| 永福县| 松潘县| 桃源县| 延吉市| 诸暨市| 定边县| 承德市| 定安县| 温泉县| 都昌县| 昭通市| 尤溪县| 基隆市| 博爱县|