字符串匹配比使用數(shù)字id要慢一點
使用explain進行mysql解析(加粗的為重要部分)
possible_keys
列出可能用到的索引
rows
顯示執(zhí)行查詢的行數(shù),越大越不好.通過加的索引,可以大大減少檢索的行數(shù)
mysql不同存儲引擎
MySQL 最常用的存儲引擎為 MyISAM貌笨、 InnoDB碟贾,其中 InnoDB 提供事務(wù)安全表缎谷,其他存儲引擎都是非
事務(wù)安全表。MyISAM 是 MySQL 的默認存儲引擎渺鹦,不支持事務(wù),也不支持外鍵,但其訪問速度快舀凛,對
事務(wù)完整性沒有要求扼仲。InnoDB 存儲引擎提供了具有提交远寸、回滾和崩潰恢復(fù)能力的事務(wù)安全。但是比起
MyISAM 存儲引擎屠凶, InnoDB 寫的處理效率要差一些驰后,并且會占用更多的磁盤空間以保留數(shù)據(jù)和索引。
Mysql可擴展方案
MySQL Replication(復(fù)制)
即 MySQL 的主從復(fù)制矗愧,是使用最多的一種架構(gòu)灶芝,如圖 2-6 所示,主服務(wù)器將SQL 記錄到日志文件唉韭,從
服務(wù)器讀取這個日志文件后將 SQL 應(yīng)用到自身夜涕。這是我們在實際應(yīng)用中使用最廣的一種方案,也是優(yōu)
先推薦方案属愤。
MySQL 數(shù)據(jù)切分
通過MySQL Replication 方案可以從一定程序上緩解平臺的壓力女器,一旦數(shù)據(jù)庫過于龐大,尤其是當寫入
過于頻繁時住诸,很難由一臺主機支撐驾胆,還是會再次面臨瓶頸。這時我們可以考慮數(shù)據(jù)庫切分技術(shù)只壳。
關(guān)于數(shù)據(jù)切分俏拱,它核心思想不是做成類似分布式數(shù)據(jù)庫。簡單來說吼句,切分就是指通過某種特定的算法锅必,
將存放在同一個庫(表)中的數(shù)據(jù)分散存放到多個庫(表)中,以達到分散單臺設(shè)備負載的效果。數(shù)據(jù)
切分同時還可以提高系統(tǒng)的總體可用性搞隐,因為單臺設(shè)備死機之后驹愚,只有這臺設(shè)備上的數(shù)據(jù)不可用,其他
設(shè)備的數(shù)據(jù)還可繼續(xù)對外提供服務(wù)劣纲。
數(shù)據(jù)切分根據(jù)其切分規(guī)則可以分為兩種:1)一種是按照不同的表來切分到不同的數(shù)據(jù)庫(主機)之上逢捺,
這種切分可以稱為數(shù)據(jù)的垂直切分;2)另外一種是根據(jù)表中的數(shù)據(jù)的邏輯關(guān)系癞季,將同一個表中的數(shù)據(jù)按
照某種算法拆分到多個表中劫瞳,這種切分稱為數(shù)據(jù)的水平切分。
垂直切分的最大特點就是規(guī)則簡單绷柒,實施方便志于,尤其適合各業(yè)務(wù)之間的耦合度非常低,相互影響很小废睦,
業(yè)務(wù)邏輯非常清晰的系統(tǒng)伺绽。在這種系統(tǒng)中,可以很容易做到將不同業(yè)務(wù)模塊所使用的表分拆到不同的數(shù)
據(jù)庫中嗜湃。根據(jù)不同的表來進行拆分奈应,對應(yīng)用程序的影響也更小,拆分規(guī)則也會比較簡單清晰购披,但由于是
垂直拆分杖挣,核心表在高并發(fā)下還是會出現(xiàn)瓶頸問題。
水平切分與垂直切分相比刚陡,相對來說稍復(fù)雜一些程梦。因為要將同一個表中的不同數(shù)據(jù)拆分到不同的數(shù)據(jù)庫
中,對于應(yīng)用程序來說橘荠,拆分規(guī)則本身就較根據(jù)表名來拆分更為復(fù)雜屿附,后期的數(shù)據(jù)維護也會更復(fù)雜一
些,但對于減輕系統(tǒng)壓力來說哥童,這種做法也更徹底挺份,是在高并發(fā)大數(shù)據(jù)下的推薦處理方法
參考資料
高性能電子商務(wù)平臺構(gòu)建:架構(gòu)、設(shè)計與開發(fā)