当前位置:首页 > 芯闻号 > 充电吧
[导读]mysql架构主要分为4个部分    最外层是连接管理器:主要处理每个连接(mysql的每一个连接都是一个线程,mysql服务器负责缓存线程,所以并不是有一个连接请求就创建一个线程,是有线程池的存在的

  1. mysql架构主要分为4个部分    

  2. 最外层是连接管理器:主要处理每个连接(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的二级索引都是包含主键索引的,所以如果有很多列建立了索引的话,主键列应该比较小。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

来源:https://juejin.cn/post/6860252224930070536| 背景日志是 mysql 数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql日志主要包括错误日志、查询日志、慢查...

关键字: mysql

mysql的一行记录,最终肯定是存储在磁盘上,也就是肉眼可见的文件上,今天我们的目标很简单,就是看看它到底是怎么存的。当然还有一个更重要的目标,就是以这个为引子,带大家完全通过一手资料,来揭秘这个问题的答案。所以大家阅读...

关键字: mysql

跟着官方文档 源码 源文件三件套自己探索

关键字: mysql 存储

什么Mysql的事务?事务的四大特性?事务带来的什么问题?你详细了解过MVCC吗?它是怎么工作的?

关键字: mysql 嵌入式

想进大厂,mysql不会那可不行,来接受mysql面试挑战吧,看看你能坚持到哪里?

关键字: mysql 嵌入式

最近,在开发一个分库分表中间件,由于功能需求,需要分析MySQL协议,发现网上对于MySQL协议分析的文章大部分都过时了,原因是分析的MySQL版本太低了。怎么办?于是乎,我便硬着头皮开始啃MySQL源码,经过两个多月的...

关键字: mysql 嵌入式

想进大厂,Mysql不会那可不行,来接受Mysql面试挑战吧,看看你能坚持到哪里?

关键字: mysql 嵌入式

Explain被称为执行计划,在语句之前增加explain关键字,MySQL会在查询上设置一个标记,模拟MySQL优化器来执行SQL语句,执行查询时,会返回执行计划的信息,并不执行这条SQL。

关键字: mysql 嵌入式

什么是事务?事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。

关键字: mysql 嵌入式

此文不会事无巨细的从select的用法开始讲解mysql,主要针对的是开发人员需要知道的一些MySQL的知识点,主要包括索引、事务、优化等方面,以在面试中高频的问句形式给出答案。

关键字: mysql 嵌入式
关闭
关闭