mysql 使用存儲引擎

 

三 使用存儲引擎

方法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
相關文章
相關標籤/搜索