日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql分表 查询 优化_MySQL性能管理及架构(查询优化、分库分表)一遍文章搞定...

發布時間:2025/3/8 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql分表 查询 优化_MySQL性能管理及架构(查询优化、分库分表)一遍文章搞定... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

相關配置參數:

slow_query_log # 啟動停止記錄慢查日志,慢查詢日志默認是沒有開啟的可以在配置文件中開啟(on)

slow_query_log_file # 指定慢查日志的存儲路徑及文件,日志存儲和數據從存儲應該分開存儲

long_query_time # 指定記錄慢查詢日志SQL執行時間的閥值默認值為10秒通常,對于一個繁忙的系統來說,改為0.001秒(1毫秒)比較合適

log_queries_not_using_indexes #是否記錄未使用索引的SQL

復制代碼

常用工具: mysqldumpslow 和 pt-query-digest

pt-query-digest --explain h=127.0.0.1,u=root,p=p@ssWord slow-mysql.log

復制代碼

1.1.3 實時獲取有性能問題的SQL(推薦)

SELECT id,user,host,DB,command,time,state,info

FROM information_schema.processlist

WHERE TIME>=60

復制代碼

查詢當前 服務器 執行超過60s的SQL,可以通過腳本周期性的來執行這條SQL,就能查出有問題的SQL。

1.2 SQL的解析預處理及生成執行計劃(重要)

1.2.1 查詢過程描述(重點!!!)

通過上圖可以清晰的了解到 MySql 查詢執行的大致過程:

1.發送SQL語句。

2.查詢緩存,如果命中緩存直接返回結果。

3.SQL解析,預處理,再由優化器生成對應的查詢執行計劃。

4.執行查詢,調用存儲引擎API獲取數據。

5.返回結果。

1.2.2 查詢緩存對性能的影響(建議關閉緩存)

第一階段:

相關配置參數:

query_cache_type # 設置查詢緩存是否可用

query_cache_size # 設置查詢緩存的內存大小

query_cache_limit # 設置查詢緩存可用的存儲最大值(加上sql_no_cache可以提高效率)

query_cache_wlock_invalidate # 設置數據表被鎖后是否返回緩存中的數據

query_cache_min_res_unit # 設置查詢緩存分配的內存塊的最小單

復制代碼

緩存查找是利用對大小寫敏感的哈希查找來實現的,Hash查找只能進行全值查找(sql完全一致),

如果緩存命中,檢查用戶權限,如果權限允許,直接返回,查詢不被解析,也不會生成查詢計劃。

復制代碼

在一個讀寫比較頻繁的系統中,建議 關閉緩存 ,因為緩存更新會加鎖。將 query_cache_type 設置為 off , query_cache_size 設置為 0 。

1.2.3 第二階段:MySQL依照執行計劃和存儲引擎進行交互

這個階段包括了多個子過程:

一條查詢可以有多種查詢方式,查詢優化器會對每一種查詢方式的(存儲引擎)統計信息進行比較,找到成本最低的查詢方式,這也就是索引不能太多的原因。

1.3 會造成MySQL生成錯誤的執行計劃的原因

1、統計信息不準確

2、成本估算與實際的執行計劃成本不同

3、給出的最優執行計劃與估計的不同

4、MySQL不考慮并發查詢

5、會基于固定規則生成執行計劃

6、MySQL不考慮不受其控制的成本,如存儲過程,用戶自定義函數

1.4 MySQL優化器可優化的SQL類型

查詢優化器:對查詢進行優化并查詢mysql認為的成本最低的執行計劃。

為了生成最優的執行計劃,查詢優化器會對一些查詢進行改寫

復制代碼

可以優化的sql類型

1、重新定義表的關聯順序;

2、將外連接轉換為內連接;

3、使用等價變換規則;

4、優化count(),min(),max();

5、將一個表達式轉換為常數;

6、子查詢優化;

7、提前終止查詢,如發現一個不成立條件(如where id = -1),立即返回一個空結果;

8、對in()條件進行優化;

1.5 查詢處理各個階段所需要的時間

1.5.1 使用profile(目前已經不推薦使用了)

set profiling = 1; #啟動profile,這是一個session級的配制執行查詢

show profiles; # 查詢每一個查詢所消耗的總時間的信息

show profiles for query N; # 查詢的每個階段所消耗的時間

1.5.2 performance_schema是5.5引入的一個性能分析引擎(5.5版本時期開銷比較大)

啟動監控和歷史記錄表: use performance_schema

update setup_instruments set enabled='YES',TIME = 'YES' WHERE NAME LIKE 'stage%';

update set_consumbers set enabled='YES',TIME = 'YES' WHERE NAME LIKE 'event%';

復制代碼

1.6 特定SQL的查詢優化

1.6.1 大表的數據修改

1.6.2 大表的結構修改

1.利用主從復制,先對從服務器進入修改,然后主從切換

2.(推薦)

添加一個新表(修改后的結構),老表數據導入新表,老表建立觸發器,修改數據同步到新表,

老表加一個排它鎖(重命名), 新表重命名, 刪除老表。

復制代碼

修改語句這個樣子:

alter table sbtest4 modify c varchar(150) not null default ''

復制代碼

利用 工具 修改:

1.6.3 優化not in 和 <> 查詢

子查詢改寫為關聯查詢:

二、分庫分表

2.1 分庫分表的幾種方式

分擔讀負載 可通過 一主多從,升級硬件來解決。

復制代碼

2.1.1 把一個實例中的多個 數據庫 拆分到不同實例(集群)

拆分簡單,不允許跨庫。但并不能減少寫負載

復制代碼

2.1.2 把一個庫中的表分離到不同的數據庫中

該方式只能在一定時間內減少寫壓力。

以上兩種方式只能暫時解決讀寫性能問題。

2.1.3 數據庫分片

對一個庫中的相關表進行水平拆分到不同實例的數據庫中

復制代碼

2.1.3.1 如何選擇分區鍵

1.分區鍵要能盡可能避免跨分區查詢的發生

2.分區鍵要盡可能使各個分區中的數據平均

2.1.3.2 分片中如何生成全局唯一ID

擴展:表的垂直拆分和水平拆分

隨著業務的發展,數據庫成為了整個系統性能的一個瓶頸,這時候就需要對數據庫進行優化,但是單單是優化只能提高有限的一點性能,這時候要想解決問題需要的是從數據庫架構層面去思考問題。數據庫的架構是一個很大的課題,里面最實用的有兩個,一個是數據庫拆分,一個是讀寫分離。今天就來談談數據庫的兩種拆分方式。

一、垂直拆分

垂直拆分很簡單,就是根據不同的業務來劃分不同的數據庫。比如一個電商系統根據業務可以分成商品表、會員表、訂單表。原先,這些表都是放在同一個數據庫服務器上,現在需要垂直拆分數據庫,就是將商品表單獨放在一個數據庫中,會員表單獨放在一個數據庫中,訂單表單獨放在一個數據庫中,這樣就解決了表與表之間的io競爭。

二、水平拆分

垂直拆分比較簡單,水平拆分就比較復雜了,要考慮很多東西。垂直拆分根據業務來拆分,或者說的直白點就是根據表名來拆分,而水平拆分是根據表里面的字段來拆分(記住是根據字段來拆分,而不是拆分字段,拆分后的每一張表的表結構都是一樣)。比如要拆分用戶表,可以根據用戶的注冊時間這一字段來拆分整個表,2016年注冊的用戶放在用戶表1中,2017年注冊的用戶放在用戶表2中,2018年注冊的用戶放在用戶表3中。這就是水平拆分,看似很簡單,實際上要考慮的東西是很多的。就比如上述的例子,我們用時間來拆分,就會有局限性。一個好產品上線后,在開始的時候用戶數量都是很少的,都需要一定時間的沉淀,才會有一個用戶數量的爆發期。如果用時間來拆分,就會出現一種情況,就是用戶表1的規模很小,而用戶表2的規模卻很大,是用戶表1的好幾倍,而用戶表三可能是用戶表1的好幾十倍。這樣的話,拆分水平拆分的意義就不大了。一般用戶表都是用戶id來拆分的,具體還要結合實際業務去分析。所以,水平拆分是一件很復雜的事情,大家在進行水平拆分的時候一定要考慮到方方面面,這樣才能設計出優秀的數據庫架構方案。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的mysql分表 查询 优化_MySQL性能管理及架构(查询优化、分库分表)一遍文章搞定...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色婷婷在线影院 | 精品一区二区亚洲 | 国产l精品国产亚洲区久久 午夜青青草 | 人人干人人模 | 亚洲第一成年人网站 | 97麻豆视频 | 日本a∨视频 | 日韩欧美小视频 | 欧美日韩中文字幕在线视频 | 午夜剧场免费看 | 精品国产午夜福利在线观看 | 精品国产一区二区三区久久狼黑人 | av看片| 男生和女生一起差差差很痛的视频 | 最新国产精品 | 欧美xxxx黑人又粗又长密月 | 少女忠诚电影高清免费 | 自拍偷拍国产精品 | 国产欧美专区 | a级片在线播放 | 亚洲欧美一区二区三区在线观看 | 国产精品99久久久久久www | 91美女在线 | 91丨九色丨丰满人妖 | 国产色播av在线 | 日本精品视频一区二区三区 | 免费超碰在线观看 | 黄色大片毛片 | 激情五月婷婷色 | 里番acg★同人里番本子大全 | 91情侣在线 | 色汉综合 | 超碰精品在线 | 最新天堂中文在线 | 日本少妇性高潮 | h视频在线免费看 | 91网站观看 | 成人免费一区二区 | 亚洲视频手机在线观看 | 日韩毛片一级 | 日韩中文字幕视频在线观看 | 国产精品视频在 | 谁有免费的黄色网址 | 亚洲尹人| 综合 欧美 亚洲日本 | 色漫 | 中文字幕人妻一区二区 | 综合爱爱网 | 女女互慰吃奶互揉调教捆绑 | 国产97av| 黑人粗进入欧美aaaaa | 国产小视频在线 | 一级黄色裸体片 | 91影院在线观看 | 国产一线二线三线女 | 毛片88 | 婷婷激情视频 | 国产精品久久久久无码av | 成人网视频 | 日本午夜一区二区三区 | 日韩中文字幕一区 | 国产精品扒开腿做爽爽爽a片唱戏 | 活大器粗np高h一女多夫 | 在线免费h | 森泽佳奈中文字幕 | 国产精品无码一区二区三区在线看 | 美女精品在线观看 | 久久国产欧美日韩精品 | 天堂а√在线最新版中文在线 | 桃色一区二区三区 | 日本少妇裸体做爰 | 男女午夜免费视频 | www国产亚洲精品久久网站 | 欧美xxxx非洲 | 亚洲最大福利视频网 | 国产草草草 | 日韩黄色影院 | 亚洲一区二区国产 | 精品免费在线视频 | 九一福利视频 | 精品久久久久久久久中文字幕 | 暖暖日本在线视频 | 97人人在线| 无码国产精品96久久久久 | 99精品久久毛片a片 成人网一区 | 伊人手机在线视频 | 成人免费aaa | 亚洲精品午夜国产va久久成人 | 日本黄色片段 | 男人日女人免费视频 | 91免费网站在线观看 | 午夜亚洲 | 久久免费看少妇高潮v片特黄 | 亚洲综合五月天 | 国产精品igao视频 | 亚洲男人天堂2024 | 日韩视频一区二区三区四区 | 黄色录像片子 | 亚洲天堂岛 |