欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

很明顯,一個主表(也就是很重要的表,例如用戶表)無限制的增長勢必嚴重影響性能,分庫與分表是一個很不錯的解決途徑,也就是性能優(yōu)化途徑,現(xiàn)在的案例是我們有一個1000多萬條記錄的用戶表members,查詢起來非常之慢,同事的做法是將其散列到100個表中,分別從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、不停機修改mysql表結(jié)構(gòu)

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

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

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

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

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

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

相關(guān)文章

  • 詳談mysql order by in 的字符順序(推薦)

    詳談mysql order by in 的字符順序(推薦)

    下面小編就為大家?guī)硪黄斦刴ysql order by in 的字符順序(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 登錄MySQL數(shù)據(jù)庫最快幾步(圖文步驟詳解)

    登錄MySQL數(shù)據(jù)庫最快幾步(圖文步驟詳解)

    當(dāng)?MySQL?服務(wù)開啟后,就可以通過客戶端來登錄?MySQL?數(shù)據(jù)庫了。在?Windows?操作系統(tǒng)下可以使用?DOS?命令登錄數(shù)據(jù)庫,本節(jié)將介紹使用命令方式登錄?MySQL?數(shù)據(jù)庫的方法
    2023-10-10
  • mysql 重要日志文件匯總

    mysql 重要日志文件匯總

    這篇文章主要介紹了mysql 重要日志文件的匯總,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-11-11
  • MySQL 4種常用的主從復(fù)制架構(gòu)

    MySQL 4種常用的主從復(fù)制架構(gòu)

    這篇文章主要介紹了MySQL 4種常用的主從復(fù)制架構(gòu),幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-08-08
  • MySQL日期及時間字段的查詢

    MySQL日期及時間字段的查詢

    這篇文章主要介紹了MySQL日期及時間字段的查詢,一分享日期及時間字段的規(guī)范化查詢方法為主展開詳細內(nèi)容,需要的小伙伴可以參考一下
    2022-05-05
  • mysql 5.7.14 安裝配置代碼分享

    mysql 5.7.14 安裝配置代碼分享

    這篇文章主要為大家分享了CentOS 6.6下mysql 5.7.13winx64安裝配置方法圖文教程,感興趣的朋友可以參考一下
    2016-09-09
  • MySQL中關(guān)于datetime、date、time、str之間的轉(zhuǎn)化與比較

    MySQL中關(guān)于datetime、date、time、str之間的轉(zhuǎn)化與比較

    這篇文章主要介紹了MySQL中關(guān)于datetime、date、time、str之間的轉(zhuǎn)化與比較,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • MySQL子查詢的空值問題解決

    MySQL子查詢的空值問題解決

    本文主要介紹了MySQL子查詢的空值問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • mysql5.6安裝配置方法圖文教程

    mysql5.6安裝配置方法圖文教程

    這篇文章主要為大家分享了mysql5.6安裝配置方法圖文教程,感興趣的朋友可以參考一下
    2016-06-06
  • SQL實現(xiàn)數(shù)據(jù)過濾流程詳解

    SQL實現(xiàn)數(shù)據(jù)過濾流程詳解

    這篇文章主要介紹了SQL實現(xiàn)數(shù)據(jù)過濾流程,當(dāng)我們在SQL中查詢數(shù)據(jù)時,肯定是有一些數(shù)據(jù)是我們不需要的,所以我們此時就要對數(shù)據(jù)進行過濾,以篩選出我們僅需要的數(shù)據(jù)
    2023-01-01

最新評論