<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在應用系統開發過程中,由於初期資料量小,開發人員寫SQL語句時更重視功能上的實現,但是當應用系統正式上線後,隨著生產資料量的急劇增長,很多SQL語句開始逐漸顯露出效能問題,對生產環境的影響也越來越大,此時這些有問題的SQL語句就成為整個系統效能的瓶頸,因此我們必須要對它們進行優化,該章節將詳細介紹在MySQL中優化SQL語句的方法。
MySQL使用者端連線成功後,通過show [session|global]status命令可以提供伺服器狀態資訊,也可以在作業系統上使用mysqladmin extended-status命令獲得這些訊息。show [session|global] status可以根據需要加上引數“session”或者“global”來顯示session級(當前連線)的統計結果和global級(自資料庫上次啟動至今)的統計結果。如果不寫,預設使用引數是“session”。
下面的命令顯示了當前session中所有統計引數的值:
-- 檢視對談所有統計的值 SHOW STATUS LIKE 'Com_%'; Or SHOW SESSION STATUS LIKE 'Com_%';
下面的命令顯示了當前global中所有統計引數的值:
-- 檢視全域性所有統計的值
SHOW GLOBAL STATUS LIKE 'Com_%';
Com_xxx表示每個xxx語句執行的次數,我們通常比較關心的是以下幾個統計引數:
上面這些引數對於所有儲存引擎的表操作都會進行累計。下面這幾個引數只是針對InnoDB儲存引擎的,累加的演演算法也略有不同。
通過以上幾個引數,可以很容易地瞭解當前資料庫的應用系統是以插入更新為主還是以查詢操作為主,以及各種型別的SQL大致的執行比例是多少。對於更新操作的計數,是對執行次數的計數,不論提交還是回滾都會進行累加。
對於事務型的應用,通過Com_commit和Com_rollback可以瞭解事務提交和回滾的情況,對於回滾操作非常頻繁的資料庫,可能意味著應用編寫存在問題。此外,以下幾個引數便於使用者瞭解資料庫的基本情況。
可以通過以下兩種方式定位執行效率較低的SQL語句。
通過定位執行效率較低的SQL語句後,可以通過EXPLAIN或者DESC命令獲取MySQL如何執行SELECT語句的資訊,包括在SELECT語句執行過程中表如何連線和連線的順序,比如想統計所有庫存階梯數量,需要關聯goods_stock表和goods_stock_price表,並且對goods_stock_price.Qty欄位做求和(sum)操作,相應 SQL 的執行計劃如下:
EXPLAIN SELECT SUM(sp.Qty) FROM goods_stock AS s LEFT JOIN goods_stock_price AS sp ON s.ID=sp.GoodsStockID;
如上圖所示每個列的簡單解釋如下:
經過以上定位步驟,我們基本就可以分析到問題出現的原因。此時我們可以根據情況採取相應的改進措施,進行優化提高語句執行效率。
在上面的例子中,已經可以確認是goods_stock是走主鍵索引的,但是對goods_stock_price子表的進行了全表掃描導致效率的不理想,那麼應該對goods_stock_price表的GoodsStockID欄位建立索引,具體命令如下:
-- 建立索引 CREATE INDEX idx_stock_price_1 ON goods_stock_price (GoodsStockID); -- 附加刪除跟查詢索引語句 ALTER TABLE goods_stock_price DROP INDEX idx_stock_price_1; SHOW INDEX FROM goods_stock_price;
建立索引後,我們再看一下這條語句的執行計劃,具體如下:
EXPLAIN SELECT SUM(sp.Qty) FROM goods_stock AS s LEFT JOIN goods_stock_price AS sp ON s.ID=sp.GoodsStockID;
可以發現建立索引後對goods_stock_price子表需要掃描的行數明顯減少(從 3 行減少到1行),可見索引的使用可以大大提高資料庫的存取速度,尤其在表很龐大的時候這種優勢更為明顯。
到此這篇關於MySQL通過show status檢視、explain分析優化資料庫效能的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45