mysql架构

    xiaoxiao2021-03-25  77

    1.mysql的逻辑架构

         

    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

    转载请注明原文地址: https://ju.6miu.com/read-39783.html

    最新回复(0)