Mysql基础架构原理

一.Mysql基础架构

1.1一条sql是怎么执行的,要经过哪些步骤?     

大体来说可以分为,server层和存储引擎

连接器:

        连接器负责和客户端进行连接,先通过TCP握手建立连接,建立完连接之后就要验证用用户名和密码进行鉴权,建立成功之后太久没有动静,就会自动断开连接,由wait_timeout控制,默认8小时。

查询缓存:

        拿到一条sql执行,mysql会先查询缓存看之前是否已经执行过该sql,之前执行过的sql会以k-v形式存储在内存中,通过key直接返回,效率很高。

        利大于弊:

                只要有对一个表的更新,会失效全部缓存,对于频繁更新的表效率很低,对于不经常有更新的操作可以用,可以手动设置参数query_cache_type设置成DEMAND

select SQL_CACHE * from T where ID=10;mysql8.0之后缓存功能删除。

分析器:

        词法,语法分析,看是否满足语法

优化器:

        如果有多个索引决定执行哪个

执行

1.2存储引擎

通过show engines;可以查看当前数据库支持哪些存储引擎

Engine:存储引擎名称。

Support:是否支持该引擎以及该引擎是否为默认存储引擎,YES表示支持,NO表示不支持,DEFAULT表示为默认存储引擎。

Comment:存储引擎的简单介绍。

Transactions:表示该引擎是否支持事务。

XA:说明该存储引擎是否支持分布事务。

Savepoints:说明该存储引擎是否支持部分事务回滚。

InnoDB与MyISAM存储引擎之间的比较

事务的支持:

        mysam不支持事务,如果需要进行事务处理,所有的引擎都要使用innodb,mysam不会回滚到之前的状态。

主键处理:

        innodb:聚簇索引,主键的叶子节点是该行的数据,而其他索引则指向主键。不指定会自动生成一个 

        mysam:非聚簇索引,主键和其他叶子节点储存指向数据的指针。允许没有主键

外键:

        mysam:不支持

        innodb:支持和其他表建立外键关联

锁支持:

        innodb支持行级锁(更能支持高并发)

        mysam只支持表级锁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值