mysql5 1 優化 MySQL5 效能優化

2021-10-17 15:24:46 字數 1973 閱讀 1644

效能優化

優化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;

mysql 5 索引及優化

索引幫助mysql高效獲取資料的資料結構,簡而言之,索引就是資料結構,是檔案 普通索引 索引只包含乙個單列,每個表可以有很多單列 復合索引 索引包含多個列 唯一索引 索引的值是唯一的,可以為null 聚簇索引 並不是一種單獨的索引型別,而是一種資料儲存結構.具體細節由儲存引擎決定,如innodb的聚...

mysql5無法注入 mysql5注入

對mysql5注入時,可以直接查詢information schema中的tables表,快速找到所需的表段。同時可以利用group concat函式,得到你想得到的東西,不用limit乙個乙個猜。前面先轉轉別人的東西 and 1 2 union select 1,2,group concat us...

MySql 5 1儲存過程

下面是mysql5.1儲存過程和函式的基本語法 1 儲存過程 create definer procedure sp name proc parameter characteristic routine body 2 函式 create definer function sp name func p...