效能優化
優化mysql資料庫是資料庫管理員和資料庫開發人員的必備技能。mysql優化,一方面是找出系統的瓶頸,提高mysql資料庫的整體效能;一方面需要合理的結構設計和引數調整,以提高使用者操作響應的速度;同時應該盡可能節省系統資源,以便系統可以提供更大負荷的服務。
mysql資料庫優化是多方面的,有幾條優化原則:
1、減少系統的瓶頸
2、減少資源的占用
3、增加系統的反應速度
優化查詢
1、索引對查詢的影響
我有乙個book表,裡面有10條記錄,沒有索引查詢的時候:
使用了索引:
看到不使用索引的時候rows為10,也就是說掃瞄了表中的10條記錄,而使用索引,rows為1,說明掃瞄了表中的1條記錄,其查詢速度自然比不使用索引快。而且possible_keys和key的值都是bknameidx,說明查詢時使用了bknameidx索引
2、使用索引查詢
使用索引查詢有幾種特殊情況,特別提一下:
(1)使用like關鍵字的查詢語句
在使用like關鍵字進行查詢的查詢語句中,如果匹配字串的第乙個字元為"%",索引不會起作用,只有"%"不在第乙個位置,索引才會起作用
(2)使用多列索引的查詢語句
mysql可以為多個字段建立索引,乙個索引可以包含16個字段,對於多列索引,只有查詢條件中使用了這些欄位中第乙個欄位時,索引才會被使用
(3)使用or關鍵字的查詢語句
查詢語句的查詢條件中只有or關鍵字,且or前後兩個條件都是索引時,查詢才會使用索引,否則,查詢將不使用索引
3、避免使用select *命令
從表中讀取的資料越多,查詢會變得越慢,始終指定需要的列,是乙個良好的習慣
4、永遠為每張表設定乙個id
我們應該為資料庫裡的每張表都設定乙個id作為其主鍵,而且最好是乙個int型的,並設定上自動增加的auto_increment標識。就算有些varchar欄位型別的值,它永遠不會重複,也不要設定為主鍵,使用varchar型別來當主鍵會使效能下降
資料庫結構優化
乙個好的資料庫設計方案對於資料庫的效能常常會起到事半功倍的效果,合理的資料庫結構不僅可以使資料庫占用更小的磁碟空間,而且能夠使查詢速度更快。資料庫結構的設計,需要考慮資料冗餘、查詢和更新的速度、欄位的資料型別是否合理等多方面內容。
下面提供幾條優化資料庫結構的建議:
1、將字段很多的表分解為多個表
對於字段很多的表,如果有些欄位的使用頻率很低,可以將這些字段分離出來形成新錶。因為當乙個表的資料量很大時,會由於使用頻率低的字段的存在而變慢,通過分解字段,可以提高表的查詢效率
2、增加中間表
對於需要經常聯合查詢的表,可以建立中間表以提高查詢效率。通過建立中間表,把需要經常聯合查詢的資料插入到中間表,然後將原來的聯合查詢改為對中間表的查詢,以此來提高查詢效率
3、優化插入記錄的速度
插入記錄時,影響插入速度的主要是索引、唯一性校驗、一次插入記錄條數等,根據這些情況,可以分別進行優化(以使用innodb的表為例):
(1)禁用唯一性檢查
插入資料時,mysql會對插入的記錄進行唯一性校驗。這種唯一性校驗也會降低插入記錄的速度,為了降低這種情況對查詢速度的影響,可以在插入記錄之前禁用唯一性檢查,等到記錄插入完畢之後再開啟:
set unique_checks = 0;
開啟唯一性檢查:
set unique_checks = 1;
(2)禁用外來鍵檢查
插入資料之前禁止對外鍵的檢查,資料插入之後再恢復對外鍵的檢查,禁用外來鍵檢查的語句如下:
set foreign_key_checks = 0;
恢復對外鍵檢查的語句為:
set foreign_key_checks = 1;
(3)禁止自動提交
插入資料之前禁止事物的自動提交,資料匯入完成之後,執行恢復自動提交操作。禁止自動提交的語句如下:
set autocommit = 0;
恢復自動提交的語句為:
set autocommit = 1;
mysq基礎優化
skip name resolve skip locking skip innodb skip bdb key buffer 1g記憶體推薦設定為256m,2g記憶體推薦設定為512m wait timeout 3或者5 2g記憶體推薦設定為5 max connections 如果訪問量很大可以設定...
怎樣禁止優化
每天都要搞到2 3點,上午一般來說10點還得起來,睡眠有點太少了。按說每天7個小時也差不多了,本科的時候11點熄燈,早上6,7點起來算來也差不多。但是那時候整個一精力充沛,每天踢球彈琴曠課打遊戲 還經常 啥也沒落下。看來年齡還是起了一定作用的 既然選在csdn寫blog,還是來點技術吧。寫這個東西感...
mysql多個密碼 3個小密碼優化MySQL
首頁 資訊 3個小密碼優化mysql 3個小密碼優化mysql 我並不期望成為乙個專家級的 dba,但是,在我優化 mysql 時,我推崇 80 20 原則,明確說就是通過簡單的調整一些配置,你可以壓榨出高達 80 的效能提公升。尤其是在伺服器資源越來越便宜的當下。警告1.沒有兩個資料庫或者應用程式...