mysql架构解析

1.mysql架构主要分为4个部分
    最外层是连接管理器:主要处理每个连接(mysql的每一个连接都是一个线程,mysql服务器负责缓存线程,所以并不是有一个连接请求就创建一个线程,是有线程池的存在的,验证权限等等)
2.第二层包括:查询缓存,sql解释器,还有优化器,在这一层并不关心底层的存储引擎,而是通过调用api来实现的,也就是说不同的存储引擎对于相同的api可能会有不同的实现细节,如果sql语句命中查询
    缓存,则不做任何处理,直接返回数据
3.并发控制,使用读写锁,当读锁可以重复添加,但是排它锁则不允许,也就是说可以一起读,但是写的时候不允许读,读的时候也不允许写
4.锁策略:表锁,是最基本的所策略,由存储引擎实现,写锁会比读锁有更高的优先级别,有可能出现写锁插入到读锁之前,反之不会出现(表锁,在存储引擎和sql服务层都有实现)
                行级锁可以带来最大的并发,但是也会带来最大的开销(行级锁只在存储引擎中实现)
5.多版本并发控制,这里的版本指的是行记录的版本(保证行记录不被并发修改,可以使用悲观锁和乐观锁进行保证数据一致性)
6存储引擎:一个schema也就是一个数据库对应mysql数据目录下一个子目录。而一张表则在对应目录下有一个与表同名的.frm文件保存表的定义(这是在mysql服务层定义的),文件名的大小写敏感性
           与具体平台相关windows不敏感,unix平台敏感(数据存储和索引存储不同的存储引擎是不同的)

InnoDB存储引擎:默认的事务型引擎,用于处理大量短期事务提交,InnodB允许数据库为不同的表和索引分别建立不同的文件。InnoDB的表的建立是基于聚簇索引来建立表的:
        所谓聚簇索引:指的是聚簇索引规定了表数据在物理介质存储上的排列顺序,一般聚簇索引是根据主键建立的,所以InnoDb对于主键的搜索效率是很高的。同时一个表只能有一个聚簇索引
        所以当需要查询范围的时候,聚簇索引是很有效的,因为存储顺序就是确定的嘛,而对于其他索引都是非聚簇索引,也就是二级索引。InnoDB默认主键是聚簇索引,如果没有的话,取第一个
        非空的唯一索引,如果没有InnoDB则自己产生一个这样的ID值,不过是隐藏的
        InnoDb的二级索引都是包含主键索引的,所以如果有很多列建立了索引的话,主键列应该比较小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世纪殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值