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

MYSQL性能優(yōu)化分享(分庫(kù)分表)

 更新時(shí)間:2012年02月27日 22:17:37   作者:  
MYSQL性能優(yōu)化之分庫(kù)分表與不停機(jī)修改mysql表結(jié)構(gòu),需要的朋友可以參考下
1、分庫(kù)分表

很明顯,一個(gè)主表(也就是很重要的表,例如用戶表)無(wú)限制的增長(zhǎng)勢(shì)必嚴(yán)重影響性能,分庫(kù)與分表是一個(gè)很不錯(cuò)的解決途徑,也就是性能優(yōu)化途徑,現(xiàn)在的案例是我們有一個(gè)1000多萬(wàn)條記錄的用戶表members,查詢起來(lái)非常之慢,同事的做法是將其散列到100個(gè)表中,分別從members0到members99,然后根據(jù)mid分發(fā)記錄到這些表中,牛逼的代碼大概是這樣子:
復(fù)制代碼 代碼如下:

<?php
for($i=0;$i< 100; $i++ ){
//echo "CREATE TABLE db2.members{$i} LIKE db1.members<br>";
echo "INSERT INTO members{$i} SELECT * FROM members WHERE mid%100={$i}<br>";
}
?>


2、不停機(jī)修改mysql表結(jié)構(gòu)

同樣還是members表,前期設(shè)計(jì)的表結(jié)構(gòu)不盡合理,隨著數(shù)據(jù)庫(kù)不斷運(yùn)行,其冗余數(shù)據(jù)也是增長(zhǎng)巨大,同事使用了下面的方法來(lái)處理:

先創(chuàng)建一個(gè)臨時(shí)表:
/*創(chuàng)建臨時(shí)表*/
CREATE TABLE members_tmp LIKE members

然后修改members_tmp的表結(jié)構(gòu)為新結(jié)構(gòu),接著使用上面那個(gè)for循環(huán)來(lái)導(dǎo)出數(shù)據(jù),因?yàn)?000萬(wàn)的數(shù)據(jù)一次性導(dǎo)出是不對(duì)的,mid是主鍵,一個(gè)區(qū)間一個(gè)區(qū)間的導(dǎo),基本是一次導(dǎo)出5萬(wàn)條吧,這里略去了
接著重命名將新表替換上去:

/*這是個(gè)頗為經(jīng)典的語(yǔ)句哈*/
RENAME TABLE members TO members_bak,members_tmp TO members;

就是這樣,基本可以做到無(wú)損失,無(wú)需停機(jī)更新表結(jié)構(gòu),但實(shí)際上RENAME期間表是被鎖死的,所以選擇在線少的時(shí)候操作是一個(gè)技巧。經(jīng)過(guò)這個(gè)操作,使得原先8G多的表,一下子變成了2G多

另外還講到了mysql中float字段類型的時(shí)候出現(xiàn)的詭異現(xiàn)象,就是在pma中看到的數(shù)字根本不能作為條件來(lái)查詢.感謝zj同學(xué)的新鮮分享。

相關(guān)文章

  • MySQL如何新建用戶并授權(quán)

    MySQL如何新建用戶并授權(quán)

    本文主要介紹了如何在MySQL中創(chuàng)建新用戶并管理其權(quán)限,包括增刪改查、創(chuàng)建表、刪除表等操作,文中詳細(xì)說(shuō)明了MySQL 5.7.18和MySQL 8.0版本中的權(quán)限配置,以及如何根據(jù)需要添加或刪除權(quán)限的步驟,旨在提供實(shí)用的數(shù)據(jù)庫(kù)管理技巧
    2024-10-10
  • mysql 8.0.12 安裝圖文教程

    mysql 8.0.12 安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.12 安裝配置圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • sql語(yǔ)句示例之case?when作為where條件

    sql語(yǔ)句示例之case?when作為where條件

    這篇文章主要給大家介紹了關(guān)于sql語(yǔ)句示例之case?when作為where條件的相關(guān)資料,在SQL語(yǔ)句中CASE WHEN子句是根據(jù)條件表達(dá)式的結(jié)果來(lái)執(zhí)行不同的邏輯操作,它使用在WHERE子句中,以根據(jù)特定的條件在查詢結(jié)果中過(guò)濾數(shù)據(jù),需要的朋友可以參考下
    2023-08-08
  • 分析MySQL復(fù)制以及調(diào)優(yōu)原理和方法

    分析MySQL復(fù)制以及調(diào)優(yōu)原理和方法

    本篇文章給大家詳細(xì)分析了MySQL復(fù)制以及調(diào)優(yōu)原理和方法,并通過(guò)代碼詳細(xì)分析了具體操作,有需要的朋友參考下吧。
    2018-01-01
  • MySQL數(shù)據(jù)庫(kù)的InnoDB和MyISAM存儲(chǔ)引擎的區(qū)別及說(shuō)明

    MySQL數(shù)據(jù)庫(kù)的InnoDB和MyISAM存儲(chǔ)引擎的區(qū)別及說(shuō)明

    InnoDB是MySQL的默認(rèn)存儲(chǔ)引擎,它支持事務(wù)、外鍵和行級(jí)鎖定,具有更好的并發(fā)控制性能和崩潰恢復(fù)能力,而MyISAM不支持事務(wù)和外鍵,使用表級(jí)鎖定,適合讀操作頻繁的場(chǎng)景
    2024-12-12
  • 使用MySQL從JSON字符串提取數(shù)據(jù)的方法詳解

    使用MySQL從JSON字符串提取數(shù)據(jù)的方法詳解

    在現(xiàn)代數(shù)據(jù)庫(kù)管理中,JSON 格式因其靈活性而廣泛使用,然而,當(dāng)數(shù)據(jù)存儲(chǔ)在 JSON 中時(shí),我們經(jīng)常需要將其轉(zhuǎn)換為更易于處理的格式,本篇文章將通過(guò)一個(gè)具體的 SQL 查詢示例,展示如何從存儲(chǔ)在 MySQL 中的 JSON 字符串提取數(shù)據(jù)并重新格式化,需要的朋友可以參考下
    2024-10-10
  • MySQL之常用的MySQL優(yōu)化工具解讀

    MySQL之常用的MySQL優(yōu)化工具解讀

    這篇文章主要介紹了MySQL之常用的MySQL優(yōu)化工具,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • MySQL InnoDB之事務(wù)與鎖詳解

    MySQL InnoDB之事務(wù)與鎖詳解

    MySQL InnoDB之事務(wù)與鎖詳解,需要使用事務(wù)的朋友可以參考下
    2012-04-04
  • MySQL中UNION語(yǔ)句用法詳解與示例

    MySQL中UNION語(yǔ)句用法詳解與示例

    這篇文章主要給大家介紹了關(guān)于MySQL中UNION語(yǔ)句用法的相關(guān)資料,實(shí)際業(yè)務(wù)中有時(shí)候需要把滿足多種獨(dú)立條件的結(jié)果集整合到一起,就可以使用UNOIN聯(lián)合查詢,需要的朋友可以參考下
    2023-08-08
  • MySQL 消除重復(fù)行的一些方法

    MySQL 消除重復(fù)行的一些方法

    這篇文章主要介紹了MySQL 消除重復(fù)行的一些方法,需要的朋友可以參考下
    2017-05-05

最新評(píng)論

赣州市| 高清| 营山县| 岑溪市| 高清| 思南县| 株洲县| 舟曲县| 横峰县| 福海县| 三穗县| 济阳县| 郎溪县| 蚌埠市| 禄丰县| 武陟县| 依兰县| 郴州市| 漳州市| 镇康县| 铜陵市| 泰安市| 西畴县| 嘉兴市| 芦山县| 宝山区| 汤原县| 始兴县| 依安县| 双牌县| 台北市| 佳木斯市| 称多县| 交口县| 台南县| 古交市| 双鸭山市| 曲阳县| 霍林郭勒市| 正阳县| 延吉市|