日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
MySQLSQL優(yōu)化的實現并不難

此文章主要向大家描述的是MySQL SQL優(yōu)化的實際操作方案,同時還涉及一個MySQL數據庫查詢所使用index的問題,MySQL數據庫的強制索引(Force Index)能實現哪些優(yōu)化?以下的文章都有答案。

在全椒等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網站建設、網站設計 網站設計制作按需搭建網站,公司網站建設,企業(yè)網站建設,品牌網站建設,成都營銷網站建設,外貿營銷網站建設,全椒網站建設費用合理。

MySQL5下大數據量查詢優(yōu)化的問題

推薦圈子: Database圈子

更多相關推薦 一般使用MySQL SQL的時候你是不會去想到優(yōu)化。但是面對一個有SQL性能問題的數據庫時,我們應該如何入手進行系統(tǒng)的分析,使得能夠盡快定位問題SQL,并且盡快解決問題。

1.使用show status 命令了解各種MySQL SQL的執(zhí)行頻率

引用

例如在MySQL的Cline上輸入

show status like 'Com_%';

顯示的是一些:Com_xxx.

Com_xxx 表示每個xx語句執(zhí)行的次數。通常情況下我們比較關注如下一些操作:

引用

Com_select:執(zhí)行select操作的次數

Com_insert:執(zhí)行Insert操作的次數,對于批量插入的INSERT操作,只累加一次

Com_update:執(zhí)行update操作的次數

Com_delete:執(zhí)行Delete操作的次數

上面這些參數對于所有存儲引擎的表操作都會進行累加。下面有些參數只針對InnoDB存儲引擎的,累加的算法也有點不一樣。

引用

Innodb_rows_read:select查詢返回的行數

Innodb_rows_inserted:執(zhí)行INSERT操作插入的行數

Innodb_rows_updated:執(zhí)行Update操作更新的行數

Innodb_rows_deleted:執(zhí)行Delete操作刪除的行數

通過上面的一些參數,我們可以了解當前數據庫的應用是以插入為主還是以查詢?yōu)橹?。以及各種類型的MySQL SQL大致的執(zhí)行比例是多少。對于更新操作的計數,是對執(zhí)行次數的計數,不管提交還是回滾都會進行累加。

對于事務型的應用,通過Com_commit和Com_rollback進行分析。如果回滾操作非常頻繁那么要思考下是不是編寫存在問題。

下面有幾個參數用于了解數據庫的基本情況

引用

Connections:試圖連接MySQL服務器的次數(執(zhí)行的命令是:show status like 'Con_%';)

Uptime: 服務器工作時間(執(zhí)行的命令是:show status like 'Up_%';)

Slow_queries:慢查詢的次數(執(zhí)行的命令是:show status like 'Slow_%';)

 2. 定位執(zhí)行效率較低的SQL語句

要想定義效率較低的SQL可以按照下面兩種方式試試。

引用

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

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

3. 使用EXPLAIN分析低效SQL的執(zhí)行計劃。

在查詢到效率低的SQL語句后,那我們可以使用explain或者DESC命令獲取Myswl如何執(zhí)行SELECT語句的信息,包括在Select語句執(zhí)行過程中表如何連接和連接的順序。

例如你想計數xxxx年公司的銷售額,那么需要操作sales和comapny table,并對money字段進行sum操作??纯丛趺词褂胑xplain:

引用

explain select sum(moneys) from sales a company b where a.company_id = b.id and a.year=XXXX \G;(注意加上\G是為了更好的看)

顯示如下:

 
 
 
  1. id: 1 
  2. select_type: SIMPLE 
  3. table: a 
  4. type: ALL 
  5. possible_keys: NULL 
  6. key:NULL 
  7. key_len: NULL 
  8. ref: NULL 
  9. rows:1000 
  10. Extra: Using where 
  11. id: 2 
  12. select_type: SIMPLE 
  13. table: b 
  14. type: ref 
  15. possible_keys: ind_company_id 
  16. key:ind_comapany_id 
  17. key_len: 5 
  18. ref: sakila.a.company_id 
  19. rows:1 
  20. Extra: Using where;Using index 

下面解釋下每個列的含義:

引用

select_type: 表示SELECT的類型,常見的取值為SIMPLE(簡單表,不使用表連接或者子查詢)、PRIMARY(主查詢,即外層的查詢)、UNION、SUBQUERY

table: 輸出結果集的表

type: 表示表的連接類型,性能由好到差的類型類型為

(System(表中僅有一行,即常量表),

const(單表中最多有一個匹配行),

eq_ref(對于前面的每一行,在此表中只查詢一條記錄),

ref(使用普通的索引),

ref_or_null(和ref類似,但是條件中包含對于NULL查詢),

index_merge(索引合并優(yōu)化),

unique_subquery(in的后面是一個查詢主鍵字段的子查詢),

index_subquery(類似unique_subquery,主要是in的后面是查詢非***索引字段的子查詢),

range(單表中的范圍查詢),

index(對于當前的每一行,都通過查詢索引來得到數據),

all(對于當前的每一行,都通過全表掃描來得到數據))

possible_keys: 表示查詢時,可能使用的索引

key:表示實際使用的索引

key_len:索引字段的長度

rows:掃描行的數量

Extra:執(zhí)行情況的說明和描述

以上的相關內容就是對MySQL SQL優(yōu)化的筆記的介紹,望你能有所收獲。


網頁題目:MySQLSQL優(yōu)化的實現并不難
網站網址:http://www.dlmjj.cn/article/ccshhis.html