mysq相關記錄

2021-09-01 17:51:08 字數 2753 閱讀 2936

1、 查詢語句的優化 。使:explain找出語句瓶頸、

2、 使用變數替換now()等 函式, 啟用查詢快取

3、 使用連線池

4、 使用記憶體表(引擎設為memory)

5、 使用mysql語句分析工具

6、 innodb引擎優化

7、 where條件排序(where語句從前往後執行,限制範圍小的應放在前面. 能夠快速縮小結果集的where條件寫在前面,如果有恒量條件也盡量寫在前面;)

8、 explain工具學習

9、 盡量不要使用like 『%%』

10、   改變表長(read_buffer_size)

11、 調整配置檔案減少io請求次數

12 、 query_cache_size = 32m show status like 'qcache%'查詢快取

13 、修改開啟的表數:mysqld.conf table_cache show status like 'open%tables';

open_tables 已經開啟的 opened_tables 需要開啟的

14 、快取執行緒:show status like 'threads%'; thread_cache = 40 來實現此目的。

15、show status like '%key_read%';

key_reads 代表命中磁碟的請求個數, key_read_requests 是總數。命中磁碟的讀請求數除以讀請求總數就是不中比率 —— 在本例中每 1,000 個請求,大約有 0.6 個沒有命中記憶體。如果每 1,000 個請求中命中磁碟的數目超過 1 個,就應該考慮增大關鍵字緩衝區了。

16、show status like "sort%"; 排序統計資訊 如果 sort_merge_passes 很大,就表示需要注意 sort_buffer_size

17、確定表掃瞄比率

show status like "com_select";

show status like "handler_read_rnd_next";

handler_read_rnd_next / com_select 得出了表掃瞄比率 —— 在本例中是 521:1。如果該值超過 4000,就應該檢視 read_buffer_size,例如 read_buffer_size = 4m。如果這個數字超過了 8m,就應該與開發人員討論一下對這些查詢進行調優了!

效能調優工具:mytop 為所有連線上的客戶機以及它們正在執行的查詢提供了乙個檢視。mytop 還提供了乙個有關關鍵字緩衝區和查詢快取效率的實時資料和歷史資料,以及有關正在執行的查詢的統計資訊。這是乙個很有用的工具,可以檢視系統中(比如 10 秒鐘之內)的狀況,您可以獲得有關伺服器健康資訊的檢視,並顯示導致問題的任何連線。

• mytop 告訴您目前 mysql 伺服器上都在進行什麼操作,並提供一些關鍵的統計資訊。在發現資料庫有問題時,應該首先求助於這個程式。

• mysqlard 會給出 mysql 伺服器乙個關鍵效能指示器的圖形表示,並給出一些調優建議。

• mysqlreport 是乙個必須的工具。它為您分析 show status 變數。

17、mysql效能調優工具

tuning-primer.sh:

可以看出在mysql 5.0裡面,myisam和innodb儲存引擎效能差別並不是很大,針對innodb來說,影響效能的主要是 innodb_flush_log_at_trx_commit 這個選項,如果設定為1的話,那麼每次插入資料的時候都會自動提交,導致效能急劇下降,應該是跟重新整理日誌有關係,設定為0效率能夠看到明顯提公升,當然,同樣你可以sql中提交「set autocommit = 0」來設定達到好的效能。另外,還聽說通過設定innodb_buffer_pool_size能夠提公升innodb的效能,但是我測試發現沒有特別明顯的提公升。

innodb引擎把資料和索引都載入到記憶體中的緩衝池(buffer pool)

innodb log檔案的尺寸多大合適,首先通過執行以下query能夠算出每分鐘寫入多少資料到日誌檔案

pager grep sequence

nopager

select (777500289 - 764981234) / 1024 / 1024 as mb_per_min;

另外對於有很頻繁增刪改操作的資料庫,通過將innodb_flush_log_at_trx_commit = 2能夠大幅提高i/o效能.

innodb_io_capacity: 這個引數據控制innodb checkpoint時的io能力

innodb_max_purge_lag 預設沒啟用,如果寫入和讀取都量大,可以保證讀取優先,可以考慮使用這個功能。

innodb_read_io_threads 預設為:4 可以考慮8

innodb_flush_method=o_direct是必須的,

mysql 儲存過程除錯工具:mysql debugging

sql for mysql developers a comprehensive tutorial and reference》

1、 cursor定義時表是否必須存在(如定義時須表存在,用巢狀儲存過程解決)

2、巢狀儲存過程 (完成)

3、巢狀游標 (完成)

4、mysqk語句跳轉(loop跳轉完成)

5、mysql變數定義(使用者變數 @xx 區域性變數:declare 變數名 型別 預設值 全域性變數@@)

變數定義用declare來定義一區域性變數,該變數的使用範圍只能在begin...end 塊中使用,變數必須定義在復合語句的開頭,並且是在其它語句之前,也可以同時申明多個變數,如果需要,可以使用default賦預設值

mysq問題記錄

1.launch配置不成功.安裝mysql5.5時,launch不成功,檢視program file檔案中沒有mysql資料夾,而program data資料夾中有mysql資料夾.說明安裝不成功,配置時找不到程式.解決方法 安裝時選擇手動安裝,配置安裝路徑,不選完整安裝.2.輸入show data...

MySQ安裝配置相關mysql8 0 11

環境 win7 10 guimysql sqlyog 第一步 解壓免安裝的mysql包 第二步 自建 my.ini 在根目錄下 內容 mysqld port 3306 設定3306埠 basedir d mysql8011 設定mysql的安裝目錄 切記此處一定要用雙斜槓 單斜槓我這裡會出錯,不過看...

MySQ安裝配置相關mysql8 0 11

環境 win7 10 guimysql sqlyog 第一步 解壓免安裝的mysql包 第二步 自建 my.ini 在根目錄下 內容 mysqld port 3306 設定3306埠 basedir d mysql8011 設定mysql的安裝目錄 切記此處一定要用雙斜槓 單斜槓我這裡會出錯,不過看...