方法1:建表時指定引擎mysql
指定innodb,不寫默認也是innodbsql
use 數據庫先數據庫
create table innodb_t1(id int,name char)engine=innodb;
create table innodb_t2(id int)engine=innodb;
show create table innodb_t1; show create table innodb_t2;
mysql> create table innodb_t1(id int,name char)engine=innodb; Query OK, 0 rows affected (0.11 sec) mysql> create table innodb_t2(id int)engine=innodb; Query OK, 0 rows affected (0.02 sec) mysql> show create table innodb_t1; +-----------+----------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-----------+----------------------------------------------------------------------------------------------------------------------------+ | innodb_t1 | CREATE TABLE `innodb_t1` ( `id` int(11) DEFAULT NULL, `name` char(1) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-----------+----------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> show create table innodb_t1\G; *************************** 1. row *************************** Table: innodb_t1 Create Table: CREATE TABLE `innodb_t1` ( `id` int(11) DEFAULT NULL, `name` char(1) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) mysql> show create table innodb_t2\G; *************************** 1. row *************************** Table: innodb_t2 Create Table: CREATE TABLE `innodb_t2` ( `id` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
方法2:在配置文件中指定默認的存儲引擎測試
/etc/my.cnf [mysqld] default-storage-engine=INNODB innodb_file_per_table=1
查看spa
[root@mysql ~]# cd /var/lib/mysql/db1/ [root@mysql db1]# ll 總用量 48 -rw-rw----. 1 mysql mysql 61 10月 6 03:50 db.opt -rw-rw----. 1 mysql mysql 8586 10月 7 01:22 innodb_t1.frm -rw-rw----. 1 mysql mysql 8556 10月 7 01:22 innodb_t2.frm -rw-rw----. 1 mysql mysql 8586 10月 6 16:28 t1.frm -rw-rw----. 1 mysql mysql 92 10月 6 17:29 t1.MYD -rw-rw----. 1 mysql mysql 1024 10月 6 17:29 t1.MYI
練習rest
建立四個表,分別使用innodb,myisam,memory,blackhole存儲引擎,進行插入數據測試code
mysql> create table innodb__t_t1(id int,name char(10))engine=innodb; Query OK, 0 rows affected (0.30 sec) mysql> create table innodb__t_t2(id int,name char(10))engine=myisam; Query OK, 0 rows affected (0.06 sec) mysql> create table innodb__t_t3(id int,name char(10))engine=memory; Query OK, 0 rows affected (0.01 sec) mysql> mysql> create table innodb__t_t4(id int,name char(10))engine=blackhole; Query OK, 0 rows affected (0.05 sec)
1.innodb存儲引擎 咱們看到t1表就是innodb,innodb表類型在硬盤上會對應2個文件 frm是表結構 ibd是t1表數據文件blog
2.memory存儲引擎 memory特色是數據存在內存裏,不存放在硬盤上,只有表結構 t3.frm 沒有表數據索引
3.backhole存儲引擎 也是隻有表結構frm內存
4.myisam存儲引擎 對應3個文件 一個frm表結構 ,MYD是myisam的data文件 ,MYI是myisam索引文件
[root@mysql db1]# ll 總用量 152 -rw-rw----. 1 mysql mysql 61 10月 7 04:52 db.opt -rw-rw----. 1 mysql mysql 8586 10月 7 04:54 innodb__t_t1.frm -rw-rw----. 1 mysql mysql 98304 10月 7 04:54 innodb__t_t1.ibd -rw-rw----. 1 mysql mysql 8586 10月 7 04:54 innodb__t_t2.frm -rw-rw----. 1 mysql mysql 0 10月 7 04:54 innodb__t_t2.MYD -rw-rw----. 1 mysql mysql 1024 10月 7 04:54 innodb__t_t2.MYI -rw-rw----. 1 mysql mysql 8586 10月 7 04:54 innodb__t_t3.frm -rw-rw----. 1 mysql mysql 8586 10月 7 04:54 innodb__t_t4.frm
總結:不一樣類型的表,在硬盤上有不一樣的體現,他們的存儲機制都不同
分別對四張表插入一條記錄
mysql> insert into innodb__t_t1 values(1,'mike'); Query OK, 1 row affected (0.04 sec) mysql> insert into innodb__t_t2 values(1,'jack'); Query OK, 1 row affected (0.04 sec) mysql> mysql> insert into innodb__t_t3 values(1,'peter'); Query OK, 1 row affected (0.00 sec) mysql> mysql> insert into innodb__t_t4 values(1,'ken'); Query OK, 1 row affected (0.00 sec)
再查詢一下四張表
mysql> select * from innodb__t_t1; +------+------+ | id | name | +------+------+ | 1 | mike | +------+------+ 1 row in set (0.11 sec) mysql> select * from innodb__t_t2; +------+------+ | id | name | +------+------+ | 1 | jack | +------+------+ 1 row in set (0.10 sec) mysql> select * from innodb__t_t3; +------+-------+ | id | name | +------+-------+ | 1 | peter | +------+-------+ 1 row in set (0.00 sec) mysql> select * from innodb__t_t4; Empty set (0.00 sec)
第四張表是blackhole
結論
#blackhole,往表內插入任何數據,都至關於丟入黑洞,表內永遠不存記錄
memory表特色
從上面看到t3表,memory有數據
咱們重啓mysql服務後,把內存清理了,再查看 mermory的數據表
service mysqld restart
數據沒有了
mysql> select * from db1.innodb__t_t3; Empty set (0.00 sec)
memory存儲引擎
#memory,在重啓mysql或者重啓機器後,表內數據清空
之後用的比較多存儲引擎,表結構是 innodb