国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MYSQL性能優(yōu)化分享-分庫分表,不停機修改mysql表結構

2024-07-24 12:40:09
字體:
來源:轉載
供稿:網(wǎng)友

下午的分享,同事講了下關于mysql性能優(yōu)化方面幾個心得,很有意義,貼出來

1、分庫分表

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

<?phpfor($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表結構

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

先創(chuàng)建一個臨時表:

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

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

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

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 荣成市| 建瓯市| 西贡区| 莱州市| 临朐县| 高邑县| 蒲江县| 航空| 新泰市| 镇宁| 娱乐| 论坛| 眉山市| 天祝| 文山县| 锦州市| 泰宁县| 富锦市| 两当县| 剑阁县| 鱼台县| 伊金霍洛旗| 日照市| 镇雄县| 佳木斯市| 泌阳县| 班玛县| 乌兰察布市| 鹤峰县| 定西市| 太保市| 四平市| 中卫市| 将乐县| 清水河县| 芮城县| 朝阳市| 剑阁县| 罗定市| 盐池县| 乡城县|