問題:MySQL單表最大記錄數不能超過多少?java
之前沒有想過MySQL數據庫的單表最大行數,直到最近interview時被問到c語言中int類型的最大值是多少時纔想到Mysql單表最大行數的問題。mysql
一開始被問到C語言中int類型的最大值有點懵逼,通常這種問題都是在校招時候會被問到,對於工做多年的人不會問這個問題。被問到這個問題的時候,大腦中思考的不是int類型最大值究竟是多少?而是爲何這個問題很經典,常常被問,瞭解這個東西能用到什麼地方呢?因而很快想到了MySql單表的最大記錄數是多少,由於表的id通常是自增加的int類型。git
曾經在中國互聯網技術圈廣爲流傳着這麼一個說法:MySQL 單表數據量大於 2000 萬行,性能會明顯降低。事實上,這個傳聞聽說最先起源於百度。具體狀況大概是這樣的,當年的 DBA 測試 MySQL性能時發現,當單表的量在 2000 萬行量級的時候,SQL 操做的性能急劇降低,所以,結論由此而來。而後又聽說百度的工程師流動到業界的其它公司,也帶去了這個信息,因此,就在業界流傳開這麼一個說法。程序員
再後來,阿里巴巴《Java 開發手冊》提出單錶行數超過 500 萬行或者單表容量超過 2GB,才推薦進行分庫分表。對此,有阿里的黃金鐵律支撐,因此,不少人設計大數據存儲時,多會以此爲標準,進行分表操做。github
那麼,你以爲這個數值多少才合適呢?爲何不是 300 萬行,或者是 800 萬行,而是 500 萬行?也許你會說這個可能就是阿里的最佳實戰的數值吧?那麼,問題又來了,這個數值是如何評估出來的呢?稍等片刻,請你小小思考一下子。面試
事實上,這個數值和實際記錄的條數無關,而與 MySQL 的配置以及機器的硬件有關。由於,MySQL 爲了提升性能,會將表的索引裝載到內存中。InnoDB buffer size 足夠的狀況下,其能完成全加載進內存,查詢不會有問題。可是,當單表數據庫到達某個量級的上限時,致使內存沒法存儲其索引,使得以後的 SQL 查詢會產生磁盤 IO,從而致使性能降低。固然,這個還有具體的表結構的設計有關,最終致使的問題都是內存限制。這裏,增長硬件配置,可能會帶來立竿見影的性能提高哈。sql
那麼,我對於分庫分表的觀點是,須要結合實際需求,不宜過分設計,在項目一開始不採用分庫與分表設計,而是隨着業務的增加,在沒法繼續優化的狀況下,再考慮分庫與分表提升系統的性能。數據庫
對此,阿里巴巴《Java 開發手冊》補充到:若是預計三年後的數據量根本達不到這個級別,請不要在建立表時就分庫分表。那麼,回到一開始的問題,你以爲這個數值多少才合適呢?個人建議是,根據自身的機器的狀況綜合評估,若是內心沒有標準,那麼暫時以 500 萬行做爲一個統一的標準,相對而言算是一個比較折中的數值。編程
bigint性能
有符號值:-9223372036854775808 到9223373036854775807(- 2 ^ 63 到 2 ^ 63-1)
無符號值:0到18446744073709551615(0到2^64 – 1)
建立表時 自增加字段 選擇無符號bigint,那麼自增加最大值是 18446744073709551615
一秒增長的記錄條數 大約多少年後纔會用完
做者:測試狗一枚
原文連接: https://blog.csdn.net/sanmi82...
來源:csdn
技術github學習地址:https://github.com/codeGoogle...
程序員編程書籍:https://github.com/codeGoogle...
關於如何學習Java,一方面須要不斷的去學習,把基礎知識學紮實,另外一方面也要認識到java的學習不能僅僅靠理論,更多的是靠實操,因此要多練習多作項目,在實踐中學習纔是最好的學習方法。不少人剛開始不知道怎麼去學習,這裏我將一些重要的技術文章整理到了github上開源項目上,但願能給你們帶來一些幫助,項目是:JavaCodeHub
另外,還整理了一些針對於程序員的編程書籍項目,都放到了github上面,項目爲:ProgramBooks 須要的話能夠自取。地址:https://github.com/codeGoogle...
若是github訪問太慢?我同時也把去放到了碼雲上面ProgramBooks
最後,照舊安利一波咱們的公衆號:「終端研發部」,目前天天都會推薦一篇優質的技術相關的文章,主要分享java相關的技術與面試技巧,咱們的目標是: 知道是什麼,爲何,打好基礎,作好每一點!這個主創技術公衆號超級值得你們關注。
關於如何學習Java,一方面須要不斷的去學習,把基礎知識學紮實,另外一方面也要認識到java的學習不能僅僅靠理論,更多的是靠實操,因此要多練習多作項目,在實踐中學習纔是最好的學習方法。不少人剛開始不知道怎麼去學習,這裏我和大部分都來自好朋友整理的一份《JavaCodeHub面試突擊》,裏面包含的內容實在是太全面了,真的很能考察出一名應聘者的成色。
我是終端研發部的小於哥 @終端研發部 面試過不少不少應聘者,說實話, 如今面試要求可真高,雖然工做擰螺絲,但面試仍是造火箭的。不少東西咱們不光要會用,也要懂其原理。在戰術上必定要重視,方能百戰不殆!若是有幫助,歡迎點贊!