国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

sql語句優化的一般步驟詳解

2024-07-24 12:51:13
字體:
來源:轉載
供稿:網友

前言

本文主要給大家分享了關于sql語句優化的一般步驟,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

一、通過 show status 命令了解各種 sql 的執行頻率

mysql 客戶端連接成功后,通過 show [session|global] status 命令可以提供服務器狀態信息,也可以在操作系統上使用 mysqladmin extend-status 命令獲取這些消息。

show status 命令中間可以加入選項 session(默認) 或 global:

session (當前連接) global (自數據上次啟動至今)
# Com_xxx 表示每個 xxx 語句執行的次數。mysql> show status like 'Com_%';

我們通常比較關心的是以下幾個統計參數:

Com_select : 執行 select 操作的次數,一次查詢只累加 1。 Com_insert : 執行 insert 操作的次數,對于批量插入的 insert 操作,只累加一次。 Com_update : 執行 update 操作的次數。 Com_delete : 執行 delete 操作的次數。

上面這些參數對于所有存儲引擎的表操作都會進行累計。下面這幾個參數只是針對 innodb 的,累加的算法也略有不同:

Innodb_rows_read : select 查詢返回的行數。 Innodb_rows_inserted : 執行 insert 操作插入的行數。 Innodb_rows_updated : 執行 update 操作更新的行數。 Innodb_rows_deleted : 執行 delete 操作刪除的行數。

通過以上幾個參數,可以很容易地了解當前數據庫的應用是以插入更新為主還是以查詢操作為主,以及各種類型的 sql 大致的執行比例是多少。對于更新操作的計數,是對執行次數的計數,不論提交還是回滾都會進行累加。

對于事務型的應用,通過 Com_commitCom_rollback 可以了解事務提交和回滾的情況,對于回滾操作非常頻繁的數據庫,可能意味著應用編寫存在問題。

此外,以下幾個參數便于用戶了解數據庫的基本情況:

Connections : 試圖連接 mysql 服務器的次數。 Uptime : 服務器工作時間。 Slow_queries : 慢查詢次數。

二、定義執行效率較低的 sql 語句

1. 通過慢查詢日志定位那些執行效率較低的 sql 語句,用 --log-slow-queries[=file_name] 選項啟動時,mysqld 寫一個包含所有執行時間超過 long_query_time 秒的 sql 語句的日志文件。

2. 慢查詢日志在查詢結束以后才記錄,所以在應用反映執行效率出現問題的時候慢查詢日志并不能定位問題,可以使用 show processlist 命令查看當前 mysql 在進行的線程,包括線程的狀態、是否鎖表等,可以實時的查看 sql 的執行情況,同時對一些鎖表操作進行優化。

三、通過 explain 分析低效 sql 的執行計劃

測試數據庫地址:https://downloads.mysql.com/docs/sakila-db.zip(本地下載)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 郁南县| 旅游| 岳阳市| 积石山| 南川市| 措勤县| 十堰市| 漾濞| 彩票| 昂仁县| 东丽区| 弋阳县| 鲁甸县| 西和县| 敦煌市| 墨竹工卡县| 华坪县| 汝州市| 凤台县| 井陉县| 绿春县| 湘乡市| 唐海县| 岳西县| 华容县| 海淀区| 峡江县| 西畴县| 敦煌市| 沐川县| 都匀市| 会东县| 奇台县| 岗巴县| 随州市| 北票市| 遂宁市| 富裕县| 万载县| 盱眙县| 邵东县|