MYSQL效能最佳化分享(分庫分表)
1、分庫分表
很明顯,一個主表(也就是很重要的表,例如使用者表)無限制的增長勢必嚴重影響效能,分庫與分表是一個很不錯的解決途徑,也就是效能最佳化途徑,現在的案例是我們有一個1000多萬條記錄的使用者表members,查詢起來非常之慢,同事的做法是將其雜湊到100個表中,分別從members0到members99,然後根據mid分發記錄到這些表中,牛逼的程式碼大概是這樣子:
複製程式碼 程式碼如下:
for($i=0;$i//echo "CREATE TABLE db2.members{$i} LIKE db1.members
";
echo "INSERT INTO members{$i} SELECT * FROM members WHERE mid%100={$i}
";
}
?>
2、不停機修改mysql表結構
同樣還是members表,前期設計的表結構不盡合理,隨著資料庫不斷執行,其冗餘資料也是增長巨大,同事使用了下面的方法來處理:
先建立一個臨時表:
CREATE TABLE members_tmp LIKE members
然後修改members_tmp的表結構為新結構,接著使用上面那個for迴圈來匯出資料,因為1000萬的資料一次性匯出是不對的,mid是主鍵,一個區間一個區間的導,基本是一次匯出5萬條吧,這裡略去了
接著重新命名將新表替換上去:
RENAME TABLE members TO members_bak,members_tmp TO members;
就是這樣,基本可以做到無損失,無需停機更新表結構,但實際上RENAME期間表是被鎖死的,所以選擇線上少的時候操作是一個技巧。經過這個操作,使得原先8G多的表,一下子變成了2G多
另外還講到了mysql中float欄位型別的時候出現的詭異現象,就是在pma中看到的數字根本不能作為條件來查詢.感謝zj同學的新鮮分享。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4328/viewspace-2803864/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [Mysql]分庫分表MySql
- 徹底搞清MySQL分庫分表(垂直分庫,垂直分表,水平分庫,水平分表)MySql
- 3.1 MYSQL分庫分表實踐MySql
- Linux MySQL分庫分表之MycatLinuxMySql
- MySQL全面瓦解28:分庫分表MySql
- MySQL分庫分表的原則MySql
- MySql分表、分庫、分片和分割槽MySql
- MySQL 分庫分表方案,總結太全了。。MySql
- 分庫分表系列:分庫分表的前世今生
- 分庫分表
- 淺談高效能資料庫叢集——分庫分表資料庫
- MySQL 常用分庫分表方案,都在這裡了!MySql
- MySQL 分表最佳化試驗程式碼MySql
- MySQL資料庫之分庫分表方案MySql資料庫
- 分庫分表注意
- SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分庫分表實踐Spring BootMyBatisMySqlJDBC
- ShardingSphere + Mysql,實現分庫分表、讀寫分離,並整合 SpringBootMySqlSpring Boot
- .Net/C#分庫分表高效能O(1)瀑布流分頁C#
- MySQL 資料庫之網際網路常用分庫分表方案MySql資料庫
- MySQL運維9-Mycat分庫分表之列舉分片MySql運維
- 使用ShardingSphere-JDBC完成Mysql的分庫分表和讀寫分離JDBCMySql
- .Net 下高效能分表分庫元件-連線模式原理元件模式
- 基因法分庫分表
- 常用分庫分表方案
- Mycat分庫分表(一)
- mycat配置分庫分表
- 分庫分表總結
- Mycat分庫分表配置
- [資料庫][分庫分表]分庫分表之後,id主鍵如何處理資料庫
- 徹底搞清分庫分表(垂直分庫,垂直分表,水平分庫,水平分表)
- oracle分表效率,資料庫分庫分表是什麼,什麼情況下需要用分庫分表Oracle資料庫
- MySQL運維12-Mycat分庫分表之按天分片MySql運維
- 你們要的MyCat實現MySQL分庫分表來了MySql
- MySQL:網際網路公司常用分庫分表方案彙總!MySql
- MyCat分庫分表、讀寫分離
- 資料庫怎麼分庫分表資料庫
- 讀寫分離 & 分庫分表 & 深度分頁
- 輕鬆理解分庫分表