mysql單表體積和一個庫設計多少張表為妥


這篇文章來自於看博客園一個園友的分享經歷,原文:http://www.cnblogs.com/qqloving/p/3427138.html

 

他不清楚mysql一個庫里面分多少張表合適,他一個庫分了8000張表。於是我看了,忍不住作答。

 

於是以個人隨筆的形式給自己做知識備忘吧。

 

1、單表體積多大的時候需要分表

 

曾經看過一個博客,分析到什么情況下需要分表。

單表形式訪問(也就是對這個表的訪問不涉及到join聯合查詢):單個表的體積大於2g的時候。或者說,單個表的行數達到一千萬的時候。

兩表jion:表的體積大於2G或行數大於500W。

 

在趕集網石展提到的分享中,純int行不能超過1000萬行,含char類型的字段不能超過500萬行。與曾經看過文章提到的1000萬和500萬很相似。難道這是一個瓶頸值嗎?

 

2、單個庫控制多少張表為妥


聽過趕集網的一個dba的分享視頻。他從中提到,mysql的單庫表數量不要超過300-400張表。這個我也沒試過。不過我想應該是他經驗之談吧。

為什么一個庫不能很多張表。我的理解是,mysql一個數據庫就是磁盤上一個文件夾。那么里面一張表就需要一個文件記錄(像myisam類型的是需要三個文件分別記錄表結構,記錄索引、記錄表數據)。
分8000張表,假設是myisam,則需要8000*3個文件。
操作系統對一個目錄有文件數限制,當文件數量太多的時候,查找文件的速度就會慢,所以我們經常見到的上傳的圖片不會全部放到一個文件夾,一般是按照年月日來生成文件夾。

當然,網友提到表的是innodb類型。
innodb類型有兩種方式存儲數據:共享表和獨享表
獨享,Innodb_file_per_table,每個表的數據都對應存儲在一個文件中
共享,一個庫下面所有的innodb類型表數據都存儲在一個文件中。
mysql數據全部放到一個文件中去了,當數據量超過一定額度,又會新生成一個數據文件來存儲。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM