mysql常用的存储引擎_Mysql常用的存储引擎

MySql通信架构

1.最上层是各种应用程序的连接数据库的驱动程序

2.Mysql在连接池中分配一个线程来处理客户端的连接请求

3.连接的安全合法性验证

并发连接数不能太大,是整个系统的性能瓶颈

4.SQL Interface      sql接口 检查客户端发送过来的sql语句是否符合sql语法

5.Parser                 sql解析器    把验证过的sql语句进行优化同时检查用户是否有查询或者执行权限

6.Optimlzer            sql执行计划   选择一条找到数据的最佳路径

7.返回数据同时缓存查询结果

Myql查询的执行路径

1.客户端发送执行查询sql语句

2.mysql服务端接收到sql语句后首先查询缓存

缓存是基于hash运算来查找的,所以要求sql语句的字符要一模一样

3.如果没有缓存 则把sql语句发送到解析器

4.优化解析后sql 找到最佳执行路径

5.执行sql语句 返回查询结果

MyISAM存储引擎

不支持事务

表级锁定

读写相互阻塞,写入不能读,读时不能写

只缓存索引

不支持外键约束

不支持聚簇索引

读取数据较快,占用资源较少

不支持MVCC(多版本并发控制机制)高并发

崩溃恢复性较差

MySQL5.5.5前默认的数据库引擎

适用场景:只读(或者写较少),表较小(可以接受长时间进行修复操作)

MyISAM引擎文件:

tbl_name.frm: 表格式定义

tbl_name.MYD: 数据文件

tbl_name.MYI: 索引文件

InnoDB引擎特点

支持事务,适合处理大量短期事务

行级锁

读写阻塞与事务隔离级别相关

可缓存数据和索引

支持聚簇索引

崩溃恢复性更好

支持MVCC高并发

从MySQL5.5后支持全文索引

从MySQL5.5.5开始为默认的数据库引擎

InnoDB数据库文件

所有InnoDB表的数据和索引放置于同一个表空间中

表空间文件:   datadir定义的目录下

数据文件:      ibddata1, ibddata2, ...

每个表单独使用一个表空间存储表的数据和索引

启用:innodb_file_per_table=ON

两类文件放在数据库独立目录中

数据文件(存储数据和索引):tb_name.ibd

表格式定义:tb_name.frm

管理存储引擎

查看mysql支持的存储引擎:

show engines;

查看当前默认的存储引擎:

show variables like ‘%storage_engine%‘;

设置默认的存储引擎:

vim /etc/my.conf

[mysqld]

default_storage_engine= InnoDB;

查看库中所有表使用的存储引擎

show table status from db_name;

查看库中指定表的存储引擎

show table status like ‘tb_name‘;

show create table tb_name;

设置表的存储引擎:

CREATE TABLE  tb_name(... )  ENGINE=InnoDB;

ALTER TABLE  tb_name  ENGINE=InnoDB;

原文:https://www.cnblogs.com/yxh168/p/9163759.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值