1. 程式人生 > >MySQL學習【第九篇存儲引擎】

MySQL學習【第九篇存儲引擎】

engine clust 行鎖 類型 str blackhole sel ODB 更多

一.存儲引擎介紹

1.我們知道mysql程序構成由連接層,sql層,存儲引擎層。存儲引擎層和磁盤進行交互,由其去取數據,而我們取得數據是表的形式展現出來,誰做的呢?就是存儲引擎結構化成表的形式返回給用戶。

2.我們都知道什麽是文件系統(操作系統組織和存儲數據的一種機制,一種軟件),文件系統類型有許多種(xfs,ext2等),而存儲引擎則類似於文件系統,不過功能更多,不僅僅用於提供基本的存取功能,還有更多功能事務功能、鎖定、備份和恢復、優化、故障恢復以及特殊功能

二.MySQL自帶的存儲引擎類型

1.MySQL 提供以下存儲引擎:
01)InnoDB (行鎖:改表中某一行的時候,不影響別人改其他行)

02)MyISAM (表鎖:改表中任一數據時,別人都不能用)
03)MEMORY
04)ARCHIVE
05)FEDERATED
06)EXAMPLE
07)BLACKHOLE
08)MERGE
09)NDBCLUSTER
10)CSV

2.還可以使用第三方存儲引擎:
01)MySQL當中插件式的存儲引擎類型
02)MySQL的兩個分支
03)perconaDB
04)mariaDB

3.查看自己是啥存儲引擎

#查看當前MySQL支持的存儲引擎類型
mysql> show engines
#查看innodb的表有哪些
mysql> select table_schema,table_name,engine from
information_schema.tables where engine=innodb; #查看myisam的表有哪些 mysql> select table_schema,table_name,engine from information_schema.tables where engine=myisam;

4.innodb和myisam的區別

#進入mysql目錄
[root@db01~l]# cd /application/mysql/data/mysql
#查看所有user的文件
[root@db01 mysql]# ll user.*
-rw-rw---- 1
mysql mysql 10684 Mar 6 2017 user.frm -rw-rw---- 1 mysql mysql 960 Aug 14 01:15 user.MYD -rw-rw---- 1 mysql mysql 2048 Aug 14 01:15 user.MYI #進入word目錄 [root@db01 world]# cd /application/mysql/data/world/ #查看所有city的文件 [root@db01 world]# ll city.* -rw-rw---- 1 mysql mysql 8710 Aug 14 16:23 city.frm -rw-rw---- 1 mysql mysql 688128 Aug 14 16:23 city.ibd

5.innodb存儲引擎在MySQL5.5版本之後,默認的存儲引擎,提供高可靠性和高性能。

innodb的核心特性:MVCC,事務,行級鎖,熱備份,Crash Safe Recovery(自動故障恢復)

6.查看自身的默認存儲引擎

SELECT @@default_storage_engine;

7.查看表的存儲引擎

SHOW CREATE TABLE City\G
SHOW TABLE STATUS LIKE CountryLanguage\G

8.使用 INFORMATION_SCHEMA 確認每個表的存儲引擎

SELECT TABLE_NAME, ENGINE FROM ?INFORMATION_SCHEMA.TABLES?WHERE TABLE_NAME = City?AND TABLE_SCHEMA = world\G

9.存儲引擎的設置

在啟動配置文件中設置服務器存儲引擎
#在配置文件的[mysqld]標簽下添加 [mysqld] default-storage-engine=<Storage Engine>

 

使用 SET 命令為當前客戶機會話設置

#在MySQL命令行中臨時設置
SET @@storage_engine=<Storage Engine>

在 CREATE TABLE 語句指定

#建表的時候指定存儲引擎
CREATE TABLE t (i INT) ENGINE = <Storage Engine>;

MySQL學習【第九篇存儲引擎】