Mysql的笔记 - mysql基础

目录

1.Mysql逻辑架构

1.1优化与执行

1.2并发控制

读写锁:

锁粒度: 

1.3事务:

隔离级别:

死锁:

1.4多版本并发控制(MVCC)

1.5Mysql存储引擎


1. Mysql逻辑架构

  

第一层:

        大多数网络客户端都有类似的架构,比如连接处理,授权认证,安全等

第二层:

        查询解析,分析优化缓存医技所有的内置函数,所有跨存储引擎的功能都在这一层实现,存储过程,,触发器,试图等

第三层:

        包含了存储引擎,负责对数据的存储和提取.

1.1 优化与执行

    每个客户端都会在进程中拥有一个线程,这个连接的查询只会在单独的线程中执行. mysql会解析查询,并创建内部数据结构,进行优化.对于select语句,服务器会先查询缓存,如果查询到存在的数据,那么服务器就不在执行,查询解析,优化和执行的过程,而是直接返回查询缓存中的结果集.

1.2 并发控制

    在同一时刻,多个客户端同时修改同一资源,会产生并发问题.

读写锁:

        读锁又叫共享锁:顾名思义,该锁是共享的,是互不堵塞的.多个客户端可以再同一时刻读取同一个资源,且互不干扰.

        写锁:又叫排它锁,也就是说,当资源被加写锁,其他的进程无法读和写的.会阻塞其他的读锁和写锁.只有在排它锁释放,其他进程才能获取锁并进行操作.

锁粒度: 

        将锁粒度定位在一个好的级别,可以为某些特定的业务场景提供能好的性能.

        表锁:锁定某个表,是mysql中最基本的锁,并且是开销最小的策略

        行锁:粒度最小,开销最大.

        全局锁:对数据库实例进行加锁.

1.3事务:

        就是一组原子性的sql查询,要么全部执行成功,要么全部执行失败.

        原子性:一个事务必须视为一个不可分割的最小工作单位,要么全执行成功,要么全执行失败.

        一致性:总是从一个一致的状态转换到另一个一致的状态.

        隔离性:一个事务在修改提交之前,对其他的事务不可见

        持久性:事务一旦提交,保存到数据库的数据会永久保存.

隔离级别:

        未提交读:又称脏读,事务中的数据修改,即使没有提交,其他事务可以读到未提交的数据.

        提交读:又称不可重复度,一个事务从开始到提交之前,是对其他事务是不可见的,在执行两次相同的查询,读出来的结果呢能不一致.

        可重复度:幻读,指的是一个事务在读取某个范围内的记录时,另一个事务又向该范围插入了新的记录,当之前的事务再次读取可能会出现幻行.\是mysql的默认事务隔离级别.

        可串行化:对每一行都加锁...

  死锁:

        指的是两个或多个客户端,在同一资源上占用,并请求锁定对方占用的资源,导致了恶性循环的现象.成为死锁.

 事务的传播机制:

  • requierd:如果当前没有事务,就新建一个事务,如果已存在一个事务中,加入到这个事务中,这是最常见的选择。
  • supports:支持当前事务,如果没有当前事务,就以非事务方法执行。
  • required_new:新建事务,如果当前存在事务,把当前事务挂起。
  • mandatory:使用当前事务,如果没有当前事务,就抛出异常。
  • not_supported:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
  • never:以非事务方式执行操作,如果当前事务存在则抛出异常。
  • nested:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与propagation_required类似的操作

1.4 多版本并发控制(MVCC)

    mvcc的实现是数据库通过保存数据在某个时间点的快照实现的,也就是说,不管执行多长时间,每个事务看到的数据都是一致的.使用过保存了两个隐藏列来实现的.事务开始的版本号,会用来和查询到的数据版本号进行比较.

1.5 Mysql存储引擎

 5.1版本之前,默认的存储引擎是MyISAM,之后是InnoDB

MyISAMIndoDB
存储

数据文件与索引文件是分开的 .MDY .MDI

可以包含动态或静态行,可以存储行记录

数据文件与索引文件是一起的 .ibd,不存储行记录
锁与并发仅支持表锁表锁,行锁,默认行锁
修复手动或自动执行检查和修复操作
索引

即使是blob text等长字段,可以对其前500个字符创建索引

支持全文索引

支持全文索引
压缩表支持压缩表
性能引擎设计简单,数据以紧密格式存储
事务不支持支持
备份支持在线热备份
恢复数据损坏概率大,恢复速度慢数据损坏概率大,恢复速度快
外键不支持支持
MVCC不支持支持

《MySQL高性能》上面有一句话这样写到: 不要轻易相信“MyISAM比InnoDB快”之类的经验之谈,这个结论往往不是绝对的。在很多我们已 知场景中,InnoDB的速度都可以让MyISAM望尘莫及,尤其是用到了聚簇索引,或者需要访问的 数据都可以放入内存的应用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值