帶您瞭解什麼是Mysql分表

帶您瞭解什麼是Mysql分表

Mysql分表技術是Mysql數據庫中的關鍵技術,下文對Mysql分表的概念及使用作了詳細的介紹,如果您對此感興趣的話,不妨一看。

首先我們需要了解爲什麼要進行Mysql分表,Mysql分表的好處是什麼。我們先來大概瞭解以下一個數據庫執行SQL的過程:
接收到SQL --> 放入SQL執行隊列 --> 使用分析器分解SQL --> 按照分析結果進行數據的提取或者修改 --> 返回處理結果

當然,這個流程圖不一定正確,這只是我自己主觀意識上這麼我認爲。那麼這個處理過程當中,最容易出現問題的是什麼?就是說,如果前一個SQL沒有執行完畢的話,後面的SQL是不會執行的,因爲爲了保證數據的完整性,必須對數據表文件進行鎖定,包括共享鎖和獨享鎖兩種鎖定。共享鎖是在鎖定的期間,其它線程也可以訪問這個數據文件,但是不允許修改操作,相應的,獨享鎖就是整個文件就是歸一個線程所有,其它線程無法訪問這個數據文件。一般MySQL中最快的存儲引擎MyISAM,它是基於表鎖定的,就是說如果一鎖定的話,那麼整個數據文件外部都無法訪問,必須等前一個操作完成後,才能接收下一個操作,那麼在這個前一個操作沒有執行完成,後一個操作等待在隊列裏無法執行的情況叫做阻塞,一般我們通俗意義上叫做“鎖表”。

鎖表直接導致的後果是什麼?就是大量的SQL無法立即執行,必須等隊列前面的SQL全部執行完畢才能繼續執行。這個無法執行的SQL就會導致沒有結果,或者延遲嚴重,影響用戶體驗。

特別是對於一些使用比較頻繁的表,比如SNS系統中的用戶信息表、論壇系統中的帖子表等等,都是訪問量大很大的表,爲了保證數據的快速提取返回給用戶,必須使用一些處理方式來解決這個問題,這個就是我今天要聊到的分表技術。

Mysql分表技術顧名思義,就是把若干個存儲相同類型數據的表分成幾個表分表存儲,在提取數據的時候,不同的用戶訪問不同的表,互不衝突,減少鎖表的機率。比如,目前保存用戶分表有兩個表,一個是user_1表,還有一個是 user_2 表,兩個表保存了不同的用戶信息,user_1 保存了前10萬的用戶信息,user_2保存了後10萬名用戶的信息,現在如果同時查詢用戶 heiyeluren1 和 heiyeluren2 這個兩個用戶,那麼就是Mysql分表從不同的表提取出來,減少鎖表的可能。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章