
连接层(客户端)
服务器(服务端)
引擎层(服务端)
存储层(服务端)
(图1-1)
客户端层客户端连接器(支持哪些程序语言)
服务器 1.连接层Native C APL, JDBC, ODBC, NET, PHP, Perl, Python, Ruby ,Cobol
2.服务层(DML,DDL) SQL接口解析器查询优化器缓存主要接收客户端的连接,进行客户端的连接处理(用户,密码校验),完成客户端的认证授权(用户具有哪些 *** 作权限[增删改查=>数据库/表])
注意:
3.引擎层1.第二层主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行.
2.所有跨引擎的实现都是在服务层实现的.
3.1.1 存储引擎概念🗝存储引擎层,存储引擎真正的负责了MySQL中数据的
存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。数据库中的索引是在存储引擎层实现的。
3.1.2 MySQL 的常用的存储引擎💀 InnoDB:MySQL5.5版本及之后默认的存储引擎.MyISAM:MySQL5.5版本之前默认的存储引擎. 3.1.3 主要区别🎅存储引擎就是
存储数据,建立索引,更新/查询数据等技术的实现方式.存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型.
MyISAM 是表锁定,限制了数据库读/写的性能;
MyISAM 不支持事务,基于以上两点,InnoDB 引擎可以锁到行。
3.1.4 不同的存储引擎的结构是不一样的.需要用到哪些存储引擎,只需更换即可.🍗1.To prepare data
show databases; // 查询所有数据库 use bag_name; // 使用数据库bag_name show tables; // 显示所有表 create table account( id int not null auto_increment comment '主键ID' primary key, name varchar(18) default null comment '姓名', money int default null comment '余额' ) auto_increment=5 charset=utf8mb4 comment '账号表'; // auto_increment=5 默认id=5,为第一条数据 // charset=utf8mb4 数据编码类型
2.For example,
-- 查询建表语句 -- 默认存储引擎 InnoDB(不指定时)
show create table account;
-- 查询 当前数据库 支持的存储引擎
show engines; // 如 图2-1 所示
// 参数说明:
// Supports transactions 支持事务
// row-level locking 支持行级锁
// foreign keys 支持外键
// stored in memory 存储在内存当中
// userful for temporary tables 通常做临时表的内存缓存
-- 创建表 my_myisam ,并指定 MyISAM 存储引擎
create table my_myisam(
id int,
name varchar(6)
) engine = MyISAM;
show create table my_myisam;
-- 创建表 my_memory ,并指定 Memory 存储引擎
create table my_memory(
id int,
name varchar(6)
) engine = MEMORY;
show create table my_memory;
💖 (图2-1)
3.1.5 InnoDB 1️⃣a. 特点(默认mysql5.5后)
DML *** 作遵循ACID模型,支持
事务;
行级锁,提高并发访问性能;支持
外键foreign key 约束,保证数据的完整性和正确性;总结:InnoDB支持事务,行级锁,外键.
b.(存储的)文件
xxx.ibd:xxx 代表的是表名(ibd二进制文件),InnoDB引擎的每张表都会对应一个表空间文件,存储该表结构(frm,sdi),数据和索引.每个mysql数据库有都有对应的ibd 文件,
参数: innodb_file_per_table
c. cmd终端 查询 emp表的ibd文件
C:\ProgramData\MySQL\MySQL Server 8.0\Data\haian>
ibd2sdi emp.ibd
d. InnnoDB – 逻辑存储结构(图2-2)
TableSpece: 表空间Segment:段Extent:区(1M)Page:页(16K)Row:行(图2-2)
3.1.6 MyISAM 2️⃣a. MyISAM 是MySQL早期的默认存储引擎
b. 特点
不支持事务.不支持外键支持表锁访问速度快c. 文件(xxx表名)
3.1.7 Memory 3️⃣xxx.sdi : 存储表结构信息
xxx.MYD : 存储数据
xxx.MYI : 存储索引
a. Memory引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。
b.特点
存储在内存中
hash索引(默认)
文件
3.1.8 存储引擎区别及特点 🗒xxx.sdi :存储表结构信息
| 特点 | InnoDB | MyISAM | Memory |
|---|---|---|---|
| 存储限制 | 64TB | 有 | 有 |
| 事务安全 | 支持 | - | - |
| 锁机制 | 行锁 | 表锁 | 表锁 |
| B+tree | 支持 | 支持 | 支持 |
| Hash索引 | - | - | 支持 |
| 全文索引 | 全文索引支持(5.6版本之后) | 支持 | - |
| 空间使用 | 高 | 低 | N/A |
| 内存使用 | 高 | 低 | 中等 |
| 批量插入速度 | 低 | 高 | 高 |
| 支持外键 | 支持 | - | - |
默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据 *** 作除了插入和查询之外,还包含很多的更新、删除 *** 作,那么InnoDB存储引擎是比较合适的选择。MyISAM : 如果应用是以读 *** 作和插入 *** 作为主,只有很少的``更新和删除` *** 作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。MeMory: 将所有数据保存在内存中,访问速度快,通常用于临时表及缓存.MeMory的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性.
总结:
4.存储层 MeMory: 将所有存储引擎真正负责MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信.不同的存储引擎具有不同的功能,根据需求选择合适的存储引擎.
数据保存在内存中,访问速度快,通常用于临时表及缓存.MeMory的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性.
总结:
4.存储层存储引擎真正负责MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信.不同的存储引擎具有不同的功能,根据需求选择合适的存储引擎.
主要存储数据库的相关数据,包含一系列的日志(错误日志,查询日志,慢查询日志二进制日志),这些日志都会存储在磁盘文件当中,并完成与存储引擎的交互。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)