mysql逻辑架构图
分为:server层 & 存储引擎层
Server层包括连接器、查询缓存、分析器、优化器、执行器等, 涵盖了mysql的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、 Memory等多个存储引擎。现在最常用的存储引擎是InnoDB,它从MySQL 5.5.5版本开始成为了 默认存储引擎。(在create table语句时通过engine=memory来设置)
redo log 物理日志 binlog 逻辑日志
redo log 重做日志 是InnoDB引擎特有的;是循环写的,空间固定会用完;
用于保证crash-safe能力。innodb_flush_log_at_trx_commit这个参数设置成1的时候, 表示每次事务的redo log都直接持久化到磁盘。这个参数我建议你设置成1,这样可以保证 MySQL异常重启之后数据不丢失。
binlog 归档日志 MySQL的Server层实现的,所有引擎都可以使用;可以追加写入的;
sync_binlog这个参数设置成1的时候,表示每次事务的binlog都持久化到磁盘。这个参数我也建 议你设置成1,这样可以保证MySQL异常重启之后binlog不丢失。
隔离性
ACID : Atomicity原子性、Consistency一 致性、Isolation隔离性、Durability持久性。
Oracle数据库的默认隔离级别其 实就是“读提交”,因此对于一些从Oracle迁移到MySQL的应用,为保证数据库隔离级别的一致, 你一定要记得将MySQL的隔离级别设置为“读提交”。配置的方式是,将启动参数transaction-isolation的值设置成READ-COMMITTED。你可以用 show variables来查看当前的值。
数据结构
哈希表、有序数组、搜索树、跳表、LSM树