cache數(shù)據(jù)庫手冊 mysql表數(shù)據(jù)量太大,達到了1億多條數(shù)據(jù),除了分庫分表之外,還有沒有其他的解決方式?
mysql表數(shù)據(jù)量太大,達到了1億多條數(shù)據(jù),除了分庫分表之外,還有沒有其他的解決方式?在正常配置下,MySQL只能承載2000萬數(shù)據(jù)(同時讀寫,表中有大文本字段,單服務器)。現(xiàn)在已經(jīng)超過1億,而且還在
mysql表數(shù)據(jù)量太大,達到了1億多條數(shù)據(jù),除了分庫分表之外,還有沒有其他的解決方式?
在正常配置下,MySQL只能承載2000萬數(shù)據(jù)(同時讀寫,表中有大文本字段,單服務器)?,F(xiàn)在已經(jīng)超過1億,而且還在增加,建議按以下方式處理:
1子表。它可以按時間或一定的規(guī)則進行拆分,以便盡可能地查詢子表中的數(shù)據(jù)庫。這是最有效的方法。特別是寫,放入一個新表,并定期同步。如果記錄不斷更新,最好將寫入的數(shù)據(jù)放在redis中,并定期同步表3的大文本字段,將它們分隔成一個新的獨立表。對于較大的文本字段,可以使用NoSQL數(shù)據(jù)庫
4優(yōu)化體系結構,或者優(yōu)化SQL查詢,避免聯(lián)合表查詢,盡量不要使用count(*)、in、recursion等性能消耗語句
5使用內(nèi)存緩存,或者在前端讀取時增加緩存數(shù)據(jù)庫。重復讀取時,直接從緩存中讀取。
以上是一種低成本的管理方法,基本上幾個服務器就可以做到,但是管理起來有點麻煩。
當然,如果總體數(shù)據(jù)量特別大,并且您不關心成本,請使用cluster或tidb
使用sqldependency緩存dependency。下面是一個推送SQL緩存依賴關系的示例。更新數(shù)據(jù)庫時,如果(Movie=null){SqlDataAdapter adpter=new SqlDataAdatper(“Select*From Movie”,sqlConnection)SqlCacheDependency sqldependency=new SqlCacheDependency(adapter.SelectCommand命令)Movies=new datatable()//請注意適配器填充在()之前創(chuàng)建sqlcachedependency,否則無效適配器填充(電影)緩存.插入在查詢分析器中調(diào)試的步驟如下:SQL 2000查詢解析器——左鏈接的對象瀏覽器(不帶F8,Movie)--在object item--debug--movies中右擊debug的存儲過程。--輸入?yún)?shù)(必須輸入所有參數(shù),包括默認值/輸出參數(shù)--單擊執(zhí)行--將出現(xiàn)浮動工具欄--上面有單步執(zhí)行和斷點設置。按F11進行單步執(zhí)行。如果要運行到指定行,只需將光標移動到指定行,然后按Ctrl F10
首先安裝相應數(shù)據(jù)庫的客戶端,并在客戶端中配置連接。打開sqldbx并選擇“工具”“管理模板”以指定客戶端路徑。重新啟動sqldbx并選擇database。選擇數(shù)據(jù)庫