mysql架构

1.mysql的逻辑架构

mysql架构_第1张图片     

1.最上面这部分并不是mysql独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的框架,例如连接处理,授权认证,安全。

2.mysql的核心服务功能都在中间这一层,包括查询解析,分析,优化,缓存,内置函数,所有跨存储引擎的功能都在这一层实现:存储过程,触发器,视图。

3.第三层为存储引擎。存储引擎负责mysql数据的存储和提取。


1.1优化与执行

     MySql会解析查询,并创建内部数据结构,然后对其进行各种优化,例如重写查询,决定表的读取顺序,以及选择合适的索引等。用户可以通过特殊的关键字提示优化器,影响它的决策过程。也可以请求优化器解释优化过程中各个因素。

     优化器比不关心表示用的是什么存储引擎。但存储引擎对优化查询有影响。


2.mysql存储引擎

      

使用SHOW TABLE STATUS LIKE 'test'可以查看test表的信息

Name:表名。

Engine:表的存储引擎类型

Row_format:行的格式

Rows:表中的行数

Avg_row_length:平均每行包含的字节数

Data_length:表数据的大小

Max_data_length:表的最大容量

Index_length:所以的大小

data_free:已分配但没有使用的空间

Auto_increment:下一个auto_increment的值

Create_time:创建表的时间

Update_time:最后一次更新表的时间

Check_time:最后一次检查表的时间

Collection:默认字符集和字符列排序规则

Checksum:如果有,表示表的实时校验和

Create_options:创建表示指定的其他选项。

Comment:该列包含了一些其他的额外信息。


1.InnoDB存储引擎

      这个是mysql的默认事务引擎,也是最重要,使用最广泛的存储引擎。它被设计来处理大量的短期事务,短期事务大多数情况是正常提交很少回滚的。有自动崩溃回复特性。

      默认的隔离级别是REPEATABLE READ(可重复读)。

2.MyISAM存储引擎

     mysql5.1及以前的默认存储引擎,不支持事务和行级锁。崩溃后无法安全修复。

3.转换表的引擎


3.1alter table

ALTER TABLE test ENGINE=InnoDB
可以使用任何引擎,但是执行时间很长。因为mysql是把表的内容复制到一张新表中,同时原表会加锁读锁,转换表的引擎会失去一些特性,比如表的外键将丢失。


3.2导入导出

把表数据导出,然后在文件中修改表的存储引擎和表名,因为一个数据库表的名字不能相同,即时是不同的存储引擎。而在文件中create table之前会drop table要小心。


3.3创建与查询

CREATE TABLE test LIKE old_table
alter table test ENGINE=InnoDB
insert into test select * from old_table


你可能感兴趣的:(mysql)