最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

為什么說MySQL單表數(shù)據(jù)不要超過500萬行

 更新時間:2019年06月26日 09:10:17   作者:qianfeng_dashuju  
在本篇文章里小編給大家整理了一篇關(guān)于為什么說MySQL單表數(shù)據(jù)不要超過500萬行的相關(guān)內(nèi)容,有興趣的朋友們閱讀下吧。

今天,探討一個有趣的話題:MySQL 單表數(shù)據(jù)達(dá)到多少時才需要考慮分庫分表?有人說 2000 萬行,也有人說 500 萬行。那么,你覺得這個數(shù)值多少才合適呢?

曾經(jīng)在中國互聯(lián)網(wǎng)技術(shù)圈廣為流傳著這么一個說法:MySQL 單表數(shù)據(jù)量大于 2000 萬行,性能會明顯下降。事實上,這個傳聞?chuàng)f最早起源于百度。具體情況大概是這樣的,當(dāng)年的 DBA 測試 MySQL性能時發(fā)現(xiàn),當(dāng)單表的量在 2000 萬行量級的時候,SQL 操作的性能急劇下降,因此,結(jié)論由此而來。然后又據(jù)說百度的工程師流動到業(yè)界的其它公司,也帶去了這個信息,所以,就在業(yè)界流傳開這么一個說法。

再后來,阿里巴巴《Java 開發(fā)手冊》提出單表行數(shù)超過 500 萬行或者單表容量超過 2GB,才推薦進(jìn)行分庫分表。對此,有阿里的黃金鐵律支撐,所以,很多人設(shè)計大數(shù)據(jù)存儲時,多會以此為標(biāo)準(zhǔn),進(jìn)行分表操作。

那么,你覺得這個數(shù)值多少才合適呢?為什么不是 300 萬行,或者是 800 萬行,而是 500 萬行?也許你會說這個可能就是阿里的最佳實戰(zhàn)的數(shù)值吧?那么,問題又來了,這個數(shù)值是如何評估出來的呢?稍等片刻,請你小小思考一會兒。

事實上,這個數(shù)值和實際記錄的條數(shù)無關(guān),而與 MySQL 的配置以及機器的硬件有關(guān)。因為,MySQL 為了提高性能,會將表的索引裝載到內(nèi)存中。InnoDB buffer size 足夠的情況下,其能完成全加載進(jìn)內(nèi)存,查詢不會有問題。但是,當(dāng)單表數(shù)據(jù)庫到達(dá)某個量級的上限時,導(dǎo)致內(nèi)存無法存儲其索引,使得之后的 SQL 查詢會產(chǎn)生磁盤 IO,從而導(dǎo)致性能下降。當(dāng)然,這個還有具體的表結(jié)構(gòu)的設(shè)計有關(guān),最終導(dǎo)致的問題都是內(nèi)存限制。這里,增加硬件配置,可能會帶來立竿見影的性能提升哈。

那么,我對于分庫分表的觀點是,需要結(jié)合實際需求,不宜過度設(shè)計,在項目一開始不采用分庫與分表設(shè)計,而是隨著業(yè)務(wù)的增長,在無法繼續(xù)優(yōu)化的情況下,再考慮分庫與分表提高系統(tǒng)的性能。對此,阿里巴巴《Java 開發(fā)手冊》補充到:如果預(yù)計三年后的數(shù)據(jù)量根本達(dá)不到這個級別,請不要在創(chuàng)建表時就分庫分表。那么,回到一開始的問題,你覺得這個數(shù)值多少才合適呢?我的建議是,根據(jù)自身的機器的情況綜合評估,如果心里沒有標(biāo)準(zhǔn),那么暫時以 500 萬行作為一個統(tǒng)一的標(biāo)準(zhǔn),相對而言算是一個比較折中的數(shù)值。

我們再來看一下關(guān)于SQL書寫的一些注意點,會給大家?guī)韼椭?/p>

sql的編寫需要注意優(yōu)化

  • 使用limit對查詢結(jié)果的記錄進(jìn)行限定
  • 避免select *,將需要查找的字段列出來
  • 使用連接(join)來代替子查詢
  • 拆分大的delete或insert語句
  • 可通過開啟慢查詢?nèi)罩緛碚页鲚^慢的SQL
  • 不做列運算:SELECT id WHERE age + 1 = 10,任何對列的操作都將導(dǎo)致表掃描,它包括數(shù)據(jù)庫教程函數(shù)、計算表達(dá)式等等,查詢時要盡可能將操作移至等號右邊
  • sql語句盡可能簡單:一條sql只能在一個cpu運算;大語句拆小語句,減少鎖時間;一條大sql可以堵死整個庫
  • OR改寫成IN:OR的效率是n級別,IN的效率是log(n)級別,in的個數(shù)建議控制在200以內(nèi)
  • 不用函數(shù)和觸發(fā)器,在應(yīng)用程序?qū)崿F(xiàn)
  • 避免%xxx式查詢
  • 少用JOIN
  • 使用同類型進(jìn)行比較,比如用'123'和'123'比,123和123比
  • 盡量避免在WHERE子句中使用!=或<>操作符,否則將引擎放棄使用索引而進(jìn)行全表掃描
  • 對于連續(xù)數(shù)值,使用BETWEEN不用IN:SELECT id FROM t WHERE num BETWEEN 1 AND 5
  • 列表數(shù)據(jù)不要拿全表,要使用LIMIT來分頁,每頁數(shù)量也不要太大

相關(guān)文章

  • MySQL性能突然下降的原因

    MySQL性能突然下降的原因

    這篇文章主要介紹了MySQL性能突然下降的原因,幫助大家更好的了解和維護數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-10-10
  • mysql建表常用sql語句個人經(jīng)驗分享

    mysql建表常用sql語句個人經(jīng)驗分享

    熟悉一些常用的建表語句可以提升你建表的速度效率,本文整理了一些,個人感覺還不錯,希望對大家有所幫助
    2014-01-01
  • 在MySQL中修改密碼及訪問限制的設(shè)置方法詳解

    在MySQL中修改密碼及訪問限制的設(shè)置方法詳解

    MySQL是一個真正的多用戶、多線程SQL數(shù)據(jù)庫服務(wù)器。MySQL是以一個客戶機/服務(wù)器結(jié)構(gòu)的實現(xiàn),它由一個服務(wù)器守護程序mysqld和很多不同的客戶程序和庫組成。
    2007-03-03
  • Navicat配置mysql數(shù)據(jù)庫用戶權(quán)限問題

    Navicat配置mysql數(shù)據(jù)庫用戶權(quán)限問題

    這篇文章主要介紹了Navicat配置mysql數(shù)據(jù)庫用戶權(quán)限問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • windows10安裝mysql5.7.17教程

    windows10安裝mysql5.7.17教程

    windows10安裝mysql5.7.17是這樣安裝的嗎?這篇文章主要為大家詳細(xì)介紹了win10下mysql5.7.17安裝配置方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 如何正確、安全地關(guān)閉MySQL

    如何正確、安全地關(guān)閉MySQL

    當(dāng)需要停止或關(guān)閉MySQL實例時,很多人并不清楚如何做到正確、安全地關(guān)閉MySQL,會對數(shù)據(jù)的安全性和穩(wěn)定性造成很大的威脅,本文將從多個方面詳細(xì)闡述如何正確關(guān)閉MySQL,包括關(guān)閉MySQL的基本方法、關(guān)閉MySQL前的準(zhǔn)備工作、優(yōu)雅地關(guān)閉MySQL以及遇到MySQL無法正常關(guān)閉的情況
    2023-09-09
  • Mysql分區(qū)表的管理與維護

    Mysql分區(qū)表的管理與維護

    改變一個表的分區(qū)方案只需使用alter table 加 partition_options 子句就可以了。這篇文章主要介紹了Mysql分區(qū)表的管理與維護,非常不錯,感興趣的朋友一起學(xué)習(xí)吧,需要的朋友可以參考下
    2016-08-08
  • 如何查看連接MYSQL數(shù)據(jù)庫的IP信息

    如何查看連接MYSQL數(shù)據(jù)庫的IP信息

    這篇文章介紹了三種查看連接MYSQL數(shù)據(jù)庫的IP信息方法,方法簡單實用,需要的朋友可以參考下
    2015-07-07
  • mysql中int(3)和int(10)的數(shù)值范圍是否相同

    mysql中int(3)和int(10)的數(shù)值范圍是否相同

    依稀還記得有次面試,有面試官問我int(10)與int(11)有什么區(qū)別,當(dāng)時覺得就是長度的區(qū)別吧,后來發(fā)現(xiàn)事情不是這么簡單,這篇文章主要給大家介紹了關(guān)于mysql中int(3)和int(10)的數(shù)值范圍是否相同的相關(guān)資料
    2021-10-10
  • MongoDB日期查詢操作圖文詳解

    MongoDB日期查詢操作圖文詳解

    MongoDB中按日期查詢是一種常見的查詢操作,而按日期查詢也是開發(fā)人員在MongoDB工作中最常遇到的查詢?nèi)蝿?wù)之一,這篇文章主要給大家介紹了關(guān)于MongoDB日期查詢操作的相關(guān)資料,需要的朋友可以參考下
    2024-02-02

最新評論

新营市| 敖汉旗| 新田县| 大城县| 中方县| 资兴市| 陕西省| 会宁县| 介休市| 民乐县| 仁怀市| 辰溪县| 鞍山市| 八宿县| 板桥市| 隆昌县| 巨野县| 前郭尔| 聂荣县| 梅河口市| 肇州县| 维西| 建瓯市| 香河县| 安阳市| 永登县| 运城市| 全南县| 尼玛县| 海兴县| 济南市| 高陵县| 涞水县| 祁门县| 湖南省| 丰台区| 西乌珠穆沁旗| 青岛市| 兴仁县| 合江县| 班戈县|