1、儲存引擎選擇:如果資料表需要事務處理,應該考慮使用 innodb,因為它完全符合 acid 特性。
如果不需要事務處理,使用預設儲存引擎 myisam 是比較明智的
2、分表分庫,主從。
3、對查詢進行優化,要盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索
引4、應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全
表掃瞄5、應盡量避免在 where 子句中使用 != 或 <> 操作符,否則將引擎放棄使用索引而進行全表掃
描6、應盡量避免在 where 子句中使用 or 來連線條件,如果乙個欄位有索引,乙個字段沒有索引,
將導致引擎放棄使用索引而進行全表掃瞄
7、update 語句,如果只更改 1、2 個字段,不要 update 全部字段,否則頻繁呼叫會引起明顯的
效能消耗,同時帶來大量日誌
8、對於多張大資料量(這裡幾百條就算大了)的表 join,要先分頁再 join,否則邏輯讀會很高,
效能很差。
1.優化索引、sql 語句、分析慢查詢;
2.設計表的時候嚴格根據資料庫的設計正規化來設計資料庫;
3.使用快取,把經常訪問到的資料而且不需要經常變化的資料放在快取中,能節約磁碟 io
4.優化硬體;採用 ssd,使用磁碟佇列技術(raid0,raid1,rdid5)等
5.採用 mysql 內部自帶的表分割槽技術,把資料分層不同的檔案,能夠提高磁碟的讀取效率;
6.垂直分表;把一些不經常讀的資料放在一張表裡,節約磁碟 i/o;
7.主從分離讀寫;採用主從複製把資料庫的讀操作和寫入操作分離開來;
8.分庫分表分機器(資料量特別大),主要的的原理就是資料路由;
9.選擇合適的表引擎,引數上的優化
10.進行架構級別的快取,靜態化和分布式;
11.不採用全文索引;
12.採用更快的儲存方式,例如 nosql 儲存經常訪問的資料**。
a. 應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索。
b. 應盡量避免在 where 子句中對字段進行 null 值判斷,避免使用!=或<>操作符,避免使用 or
連線條件,或在 where 子句中使用引數、對欄位進行表示式或函式操作,否則會導致權標掃瞄
c. 不要在 where 子句中的「=」左邊進行函式、算術運算或其他表示式運算,否則系統將可能無
法正確使用索引。
d. 使用索引字段作為條件時,如果該索引是復合索引,那麼必須使用到該索引中的第乙個字段作為
條件時才能保證系統使用該索引,否則該索引將不會被使用。
e. 很多時候可考慮用 exists 代替 in。
f. 盡量使用數字型字段。
g. 盡可能的使用 varchar/nvarchar 代替 char/nchar。
h. 任何地方都不要使用 select from t ,用具體的字段列表代替「」,不要返回用不到的任何字段。
i. 盡量使用表變數來代替臨時表。
j. 避免頻繁建立和刪除臨時表,以減少系統表資源的消耗。
感恩於心,回報於行。 面試寶典系列-python
k. 盡量避免使用游標,因為游標的效率較差。
l. 在所有的儲存過程和觸發器的開始處設定 set nocount on ,在結束時設定 set
nocount off。
m. 盡量避免大事務操作,提高系統併發能力。
n. 盡量避免向客戶端返回大資料量,若資料量過大,應該考慮相應需求是否合理。
mysql資料庫的優化
先學習一下mysql的相關優化問題,主要是從提高mysql資料庫伺服器的效能的思路進行考慮,主要包含以下8個方面的優化 1 選取最適用的字段屬性 2 使用連線 join 來代替子查詢 sub queries 3 使用聯合 union 來代替手動建立的臨時表 4 事務 5 鎖定表 6 使用外來鍵 7 ...
MySQL資料庫的優化
索引能大大提高查詢速度,同時卻會降低更新表的速度,如對表進行insert update和delete。因為更新表時,mysql不僅要儲存資料,還要儲存一下索引檔案。建立索引會占用磁碟空間的索引檔案。索引適用於不經常修改的字段,並且表越大建立索引的效果越明顯。1mobile為索引字段,name為非索引...
MySQL資料庫的優化
mysql為何要進行優化 mysql優化是乙個綜合性的技術,主要包括 要保證資料庫的效率,要做好以下四個方面的工作 通俗地理解三個正規化 第一正規化 1nf是對屬性的原子性約束,要求屬性 列 具有原子性,不可再分解 只要是關係型資料庫都滿足1nf 第二正規化 2nf是對記錄的惟一性約束,要求記錄有惟...