一、MySQL引擎類型
(一)、InnoDB
1、InnoDB簡介
InnoDB是my預設引擎,支援事務,in的資料儲存在表空間(tablespace)中,透過間隙鎖(next-key locking)防止幻讀。
2、InnoDB特點
(1)In內部做了許多最佳化,in基於叢集索引建立表,對主鍵查詢有很高的效能。
(2)讀取資料時,能夠在記憶體中建立hash索引加速插入緩衝區,讀取資料時採取可預讀。
(3)支援熱備份,my其他引擎不支援此功能。
(二)、MyISAM
1、MyISAM簡介
MyISAM是my5.1之前版本的預設引擎,支援全文索引、壓縮、空間函數,但不支援事務及行級鎖,適用於唯讀取資料、表小可忍受修復操作的應用場景。
2、MyISAM特點
(1)MyISAM儲存將表格存放到兩個檔案:資料檔案和索引檔案。
(2)MyISAM支援對整張表進行加鎖,但不支援行加鎖。
(3)MyISAM壓縮表,針對某些不再修改的表數據,使用MyISAM將表進行壓縮,以減少磁碟I/O操作,提高查詢效率。
(三)、CSV
CSV引擎可將普通的CSV檔案當作Mysql表處理,在資料庫執行時拷入拷出文件,另外也可將excel等形式檔案轉儲成CSV,再透過Mysql的CSV引擎處理成mysql表類型。作為一種資料交換機制,非常實用。
(四)、Memory
Memory引擎是將所有的資料儲存到記憶體中,不需要磁碟I/O,它所儲存的資料主要是儲存和尋找資料處理時的中間數據,重啟數據就清空。如果Mysql執行過程中,需要臨時表來保存中間結果,內部使用的暫存表便是Memory表。
(五)、NDB Cluster
NDB叢集索引是mysql公司在收購了NDB資料庫後開發的,支援分散式、容災、高可用的資料庫索引。
二、引擎相關操作
1、查看mysql目前版本引擎
使用指令show enginses;查看mysql引擎
5.1版本中的mysql 引擎:
5.7版本中的mysql 引擎(可透過mysql客戶端執行指令查看):
2、指定mysql引擎
方法一:修改my.cnf設定檔
(1)如果不太清楚mysql的my.cnf設定檔存放位置,可透過sudo find /-name my.cnf查找該檔案路徑。
(2)修改如下:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid default-storage-engine=MyISAM
# ( 3)使用service mysqld start 指令,重新啟動mysql服務;查看engine型別
2、在建立函式庫/表時指定引擎
CREATE TABLE mytable (id int, title char(20)) ENGINE = INNODB
ALTER TABLE mytable ENGINE = MyISAM
以上就是MySQL資料庫最佳化(一)—MySQL引擎 的內容,更多相關內容請關注PHP中文網(www.php.cn)!