程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 帶您了解什麼是Mysql分表

帶您了解什麼是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分表從不同的表提取出來,減少鎖表的可能。
 

MySQL服務器的內部鎖定

25條mysql和sql server區別

帶您深入了解Mysql臨時表

Mysql清空表的實現方法

查看Mysql表結構的命令

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved