01)InnoDB
数据经常添加,查询,修改,删除,使用InnoDB存储引擎(事务),适合涉及钱或者数据准确性高的公司
02)MyISAM
只读取或者添加,可以使用MyISAM存储引擎
03)MEMORY
支持hash索引
04)ARCHIVE
05)FEDERATED
06)EXAMPLE
07)BLACKHOLE
08)MERGE
09)NDBCLUSTER
10)CSV
#还可以使用第三方存储引擎:
01)MySQL当中插件式的存储引擎类型
MySQL的两个分支
02)perconaDB
03)mariaDB
#查看当前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';#查看表的属性
mysql>select * from tables where table_name='city'\G
2.innodb和myisam的物理区别
#myisam存储引擎的文件:
-rw-rw---- 1 mysql mysql 10684 Apr 1320:27 user.frm #表结构
-rw-rw---- 1 mysql mysql 1240 Apr 2115:59 user.MYD #用户密码
-rw-rw---- 1 mysql mysql 2048 Apr 2115:59 user.MYI #完整用户#innodb存储引擎的文件:
-rw-rw---- 1 mysql mysql 8698 Apr 2116:03 xuesheng.frm #表结构
-rw-rw---- 1 mysql mysql 98304 Apr 2116:07 xuesheng.ibd #表数据
#查看数据库当前存储引擎
mysql> SELECT @@default_storage_engine;
+--------------------------+
| @@default_storage_engine |
+--------------------------+
| InnoDB |
+--------------------------+
1 row inset(0.00 sec)#查看表的存储引擎
mysql> show create table city;
mysql>select * from tables where table_name='city'\G
2)修改默认的存储引擎
#临时修改
mysql>set @@default_storage_engine=myisam;#永久修改[root@db02 ~]# vim /etc/my.cnf[mysqld]default_storage_engine=myisam
[root@db02 ~]# systemctl restart mysql
3)建表的时候设置存储引擎
mysql> create table lhd(id int)engine=myisam;
Innodb 存储引擎的表空间
1.共享表空间
1)存储的内容
#存储内容:1.系统数据
2.undo redo log,undo log 事务的日志
3.临时表
2)查看共享表空间
mysql> show variables like '%path%';
+----------------------------------+------------------------+
| Variable_name | Value |
+----------------------------------+------------------------+
| innodb_data_file_path | ibdata1:12M:autoextend |
+----------------------------------+------------------------+
5 rows inset(0.00 sec)
3)配置共享表空间
#1.编辑配置文件[root@db02 mysql]# vim /etc/my.cnf[mysqld]innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend
#2.重启数据库[root@db01 data]# systemctl restart mysql#3.启动失败,报错[root@db02 ~]# /etc/init.d/mysqld start
Starting MySQL. ERROR! The server quit without updating PID file(/usr/local/mysql-5.6.46/data/db02.pid).
#4.看日志[ERROR] InnoDB: Data file ./ibdata1 is of a different size 768 pages (rounded down to MB) than specified in the .cnf file3200 pages!#5.修改配置文件[root@db02 mysql]# vim /etc/my.cnf[mysqld]#修改ibdata1跟实际的ibdata1文件一样大小innodb_data_file_path=ibdata1:76M;ibdata2:50M:autoextend
#6.再次重启[root@db02 ~]# /etc/init.d/mysqld start
2.独立表空间
对于用户自主创建的表,会采用此种模式,每个表由一个独立的表空间进行管理
1)查看独立表空间
#1.物理层面查看独立表空间[root@db01 lhd]# pwd
/service/mysql/data/lhd
[root@db01 lhd]# ll
total 220
-rw-rw---- 1 mysql mysql 61 Apr 1414:43 db.opt
-rw-rw---- 1 mysql mysql 8640 Apr 2212:21 qiudao.frm
-rw-rw---- 1 mysql mysql 98304 Apr 2212:21 qiudao.ibd
-rw-rw---- 1 mysql mysql 8854 Apr 2212:21 student.frm
-rw-rw---- 1 mysql mysql 98304 Apr 2212:21 student.ibd
#2.mysql里查看独立表空间
mysql> show variables like '%per_table%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row inset(0.00 sec)