mysql存储引擎

mysql体系结构

 

 

存储引擎: 就是存储数据,建立索引,更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型

查看已有表的使用存储引擎:

>show create table 表名\G;

 

查看当前数据库的默认存储引擎和可提供的存储引擎:

>show engines;

 修改默认存储引擎:

step1:修改配置文件/etc/my.cnf

  default_storage_engine=存储引擎

step2:重启mysqld服务

 

设置表的存储引擎:

1.alter table 表名  engine=存储引擎;

2.创建表时指定存储引擎:

create table 表名 (字段 类型)engine=存储引擎;

 

常用的存储引擎:

INNODB:一种兼顾高可靠性和高性能的通用存储引擎,mysql 默认存储引擎。支持外键,事务,行级锁

表文件:**.sdi(表结构文件)     **.ibd(表空间文件,数据和索引)

show variables like "innodb_file_per_table";    #每一张表对应一个表空间文件

 

 

MYISAM:不支持外键,不支持事务,支持表级锁,不支持行级锁,访问速度快

表文件:**.sdi (表结构信息)  **.MYD(表数据)**MYI(索引信息)

 

Memory:表数据存储在内存中,由于受到硬件文件 ,或者断电问题的影响,只能将这些表作为临时表或者缓存使用

特点:

内存存放,速度较快

hash索引(默认)

表文件:**.sdi(表结构文件 )

 

锁粒度:

表级锁:一次直接对整张表进行加锁

页级锁:对整个页面进行加锁

行级锁:只锁定某一行

 

锁类型:show status like "Table_lock%";

读锁:(共享锁)支持并发读

写锁:(排它锁,互斥锁)独占,上锁期间其他的线程不能进行读表和写表。

 

存储引擎选择

innodb:对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询外,还包含很多的更新和删除操作

myisam: 以读操作和插入操作为主,只有很少的更新个删除操作,并对事务的完整性和并发性要求不高

memory: 所有数据都在内存中,访问速度快,通常用于临时表及缓存,缺陷:对表的大小有限制,太大的表无法缓存到内存中,而且无法保证数据的安全性。

select操作多的表,使用于myisam存储引擎,节约系统资源

insert操作多的表,使用于innodb存储引擎,并发访问量大

 

posted @ 2020-08-06 16:15  krystal_LA  阅读(188)  评论(0编辑  收藏  举报