目錄
mysql資料庫優化
資料庫優化的目的
資料庫優化入手方面
學習使用的資料庫
資料庫開啟慢查詢日誌 配置
慢日誌包含的內容
如何檢視mysql日誌
mysqldumpslow
pt-query-digest
如何通過慢查日誌發現有問題的sql?
如何分析sql查詢?
count()和max()的優化方法
max()優化方法
count()優化方法
sakila樣例資料庫***租賃業務流程解讀
sakila資料庫主要描述了***租賃系統的業務流程,這裡列舉其中的關鍵點解讀該流程如何執行:
這裡簡單通過以下語句來簡單了解以下檢視日誌的過程。
上面就是對mysql的慢日誌的相關配置,接下來我們只要執行乙個查詢語句,並且查詢時長超過1秒,就可以在日誌檔案中檢視到相關的記錄。
這篇部落格有著詳細的mysqldumpslow的使用語法:
它所查詢出來的內容簡單的分為三個部分:
這些分析工具可以大大的減少我們工作中對mysql慢日誌的分析。
io大的sql
未命中索引的sql
使用explain查詢sql的執行計畫(資料庫語句的執行都是先分析,後執行)
max通常被使用於查詢最大的或者最後的操作,比如查詢出最後的支付時間。
這裡是執行結果,那麼我們怎麼進行優化呢?
mysql> explain select max(payment_date) from payment \g
*************************** 1. row ***************************
id: 1
select_type: ******
table: payment//目標表
partitions: null //沒有索引
type: all //全表掃瞄
possible_keys: null
key: null
key_len: null
ref: null
rows: 16086 //查詢行數
filtered: 100.00 //過濾
新增索引
mysql> create index idx_paydate on payment(payment_date);
query ok, 0 rows affected (0.04 sec)
records: 0 duplicates: 0 warnings: 0
建立索引後的執行結果
mysql> explain select max(payment_date) from payment \g
*************************** 1. row ***************************
id: 1
select_type: ******
table: null
partitions: null
type: null
possible_keys: null
key: null
key_len: null
ref: null
rows: null
filtered: null
extra: select tables optimized away
1 row in set, 1 warning (0.00 sec)
//這時我們可以清楚的看到執行時間大大的縮短了
count(列名)和count(*)是不一樣的。
列名:如果這一列有空值,那麼結果是不會包含空值的。
*:表中具體的行數。
上面的語句使用count(列名的特性),如果列名是2006/2007,那麼就進行計數,如果不是,那麼就判定為空,不進行計數。利用好這個特性,對我們的sql邏輯的實現很有幫助。
感謝瀏覽,希望對你有所幫助。
mysql資料庫優化 1 提綱
應用程式架構中 lamp lnmp 最慢的一環 都是資料庫 php 業務邏輯程式都是相似的 不會隨著資料的增加而變得更加複雜 mysql,來說,資料是不斷的增加的,同樣的運算,隨著資料的增加而變慢!如何提公升資料庫的效率?通常需要從 個方面考慮 l 設計方面 儲存引擎的選擇,字段型別的選項,實體間的...
資料庫優化 1
1 乙個好的 要想資料查詢達到很好的效果,資料庫 設計是最基礎也是最重要的 工作 資料庫設計是要遵循一定規則的,即當資料庫設計正規化,資料庫設計正規化包括第一正規化 第二正規化 第三正規化 第四正規化 第五正規化和第六正規化。不過一般資料庫只要滿足第 一 第二和第三正規化就足夠了。在建立乙個資料庫的...
mysql資料庫優化索引 mysql資料庫索引調優
一 mysql索引 1 磁碟檔案結構 innodb引擎 frm格式檔案儲存表結構,ibd格式檔案儲存索引和資料。myisam引擎 frm格式檔案儲存表結構,myi格式檔案儲存索引,myd格式檔案儲存資料 2 mysql資料庫資料範問原理 innodb btree 1 ibd檔案中主鍵構建b tree...