用到啥學啥,mysql資料庫優化成了這幾天的老大難問題。瘋狂的尋找mysql優化的資料,覺得有用的不少,記錄下跟大家分享,對了,這裡僅僅是mysql資料庫本身的優化,沒有寫磁碟之類的:
開始之前,介紹倆mysql的命令:
show global status; 檢視執行狀態的,顯示執行各種狀態值
show variables; 查詢mysql伺服器配置資訊的
ps:在命令裡面設定配置資訊的話,下次重啟不起作用,所以要寫到my.cnf裡面。
1.慢查詢
就是語句執行需要的時間,如果超過設定的值,則進行記錄。
show variables like '%slow%';這個可以檢視是否開啟及設定的時間,單位為秒。
show global status like '%slow%';這個是檢視統計情況
2.連線數
遇見」mysql: error 1040: too many connections」的情況,一種是訪問量確實很高,mysql伺服器抗不住,這個時候就要考慮增加從伺服器分散讀壓力,另外一種情況是mysql配置檔案中max_connections值過小:
show variables like 'max_connections';檢視最大連線數
mysql> show global status like 'max_used_connections'檢視目前出現的最大連線數
3.key_buffer_size
show variables like 'key_buffer_size';顯示目前key_buffer_size的設定值,單位是位元組。
那麼這個引數設定多少合適呢,一般是記憶體的1/4大小。如何確定乙個合適的值呢?
show global status like 'key_read%';這個是看索引請求(key_read_requests)的,還可以檢視記憶體中沒有找到直接從硬碟讀取索引(key_reads)。兩者的比值key_reads / key_read_requests越小越好,至少是1:100,1:10000算是很不錯。不過比例再大的話,也沒有很大的意義了。
mysql伺服器還提供了key_blocks_*引數:show global status like 'key_blocks_u%';
key_blocks_unused表示未使用的快取簇(blocks)數,key_blocks_used表示曾經用到的最大的blocks數,比如這台伺服器,所有的快取都用到了,要麼增加key_buffer_size,要麼就是過渡索引了,把快取佔滿了。比較理想的設定:
key_blocks_used / (key_blocks_unused + key_blocks_used) * 100% ≈ 80%
4.open_tables
show global status like 'open%tables%';檢視開啟表的情況
open_tables表示開啟表的數量,opened_tables表示開啟過的表數量,如果opened_tables數量過大,說明配置中table_cache(5.1.3之後這個值叫做table_open_cache)值可能太小。
比較適合的值:
open_tables / opened_tables * 100% >= 85%
open_tables / table_cache * 100% <= 95%
5.查詢快取(query cache)
詳細出處:mysql資料庫優化 - 23生活
mysql資料庫優化索引 mysql資料庫索引調優
一 mysql索引 1 磁碟檔案結構 innodb引擎 frm格式檔案儲存表結構,ibd格式檔案儲存索引和資料。myisam引擎 frm格式檔案儲存表結構,myi格式檔案儲存索引,myd格式檔案儲存資料 2 mysql資料庫資料範問原理 innodb btree 1 ibd檔案中主鍵構建b tree...
mysql資料庫優先 MySQL資料庫優化
1.新增索引 mysql資料庫的四類索引 index 普通索引,資料可以重複,沒有任何限制。unique 唯一索引,要求索引列的值必須唯一,但允許有空值 如果是組合索引,那麼列值的組合必須唯一。primary key 主鍵索引,是一種特殊的唯一索引,乙個表只能有乙個主鍵,不允許有空值,一般是在建立表...
MySQL 資料庫優化
以下的文章主要描述的是mysql資料庫簡單實用優化的具體方法的實現,中包括如何定期的表進行分析與檢查,以及如何正確對錶進行定期的優化,以下就是具體方案的描述,希望在你今後的學習中會有所幫助。1 定期分析表和檢查表 分析表的語法如下 複製 如下 analyze local no write to bi...