首页 > TAG信息列表 > MySQL45
MySQL45讲-事务隔离和索引
一、事务 1.概述 事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在 MySQL 中,事务支持是在引擎层实现的。MyISAM 引擎就不支持事务,InnoDB是支持事务。 2.隔离性与隔离级别 事务隔离的特性 ACID:原子性、一致性、隔离性、持久性 一致性:由原子性,隔离性和持久性MySQL45讲学习-基础构架查询和更新一条sql语句
一、基础构架 1.概述 MySQL 可以分为 Server 层和存储引擎层两部分,Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视MySQL45讲-2-一条SQL更新语句是如何执行的?
前面我们了解了SQL查询语句是如何执行的,一条SQL查询语句的过程需要经过连接器、分析器、优化器、执行器等功能模块,最终到达存储引擎。 在MySQL中,可以恢复到半个月内的任何一个时间点,这时基于日志系统来实现的。 更新语句的流程 在这个例子中,假设创建了表T。 create table T(ID inMySQL45讲-1-一条SQL查询语句是如何执行的?
这个专栏记录自己学习MySQL45讲的记录 MySQL结构 通常我们在使用MySQL时,不太关心底层是如何执行的,但是我们如果了解MySQL的结构,在排查问题时也会更加方便。 大体来说,MySQL可以分为Server层和存储引擎层两部分,Server层包括连接器、查询缓存、分析器、优化器、执行器等,用来执行核数据分析 | MySQL45道练习题(updating)
数据准备 创建学生表(Student)、教师表(Teacher)、科目表(Course)、成绩表(SC) # 学生表 Student: create table Student( SId varchar(10) , Sname varchar(10), Sage datetime, Ssex varchar(10)); # 教师表 Teacher create table Teacher( TId varchar(10),mysql索引(上)来源:mysql45讲
索引为了提高查询的效率,就像是书的目录一样.一本500页的书,如果你想快速找到其中的某一个知识点,在不借助目录的情况下,那我估计你可得找一会儿。同样,对于数据库的表而言,索引其实就是它的“目录. 索引常见的模型 哈希表是一种以键-值(key-value)存储数据的结构,我们只要输入待查找的值即redo日志-mysql45讲-打卡活动
redo log 文件格式 type:日志类型 space ID:表空间ID page number:页号 data:日志内容 日志类型 MLOG_1BYTE MLOG_2BYTE MLOG_4BYTE MLOG_8BYTE MLOG_WRITE_STRING MLOG_REC_INSERT MLOG_COMP_REC_INSERT MLOG_COMP_PAGE_CREATE MLOG_COMP_PAGE_REC_DELETE MLOG_COMP_LIST_STARTMySQL45讲之IO性能提升
前言 本文介绍 MySQL 的 binlog 和 redo log 写入机制和刷盘策略,以及如何提升 MySQL 的 IO 性能。 binlog 的写入机制 binlog 的写入流程是: 先将日志写入到 binlog cache 中,然后再 write page cache 到磁盘(文件系统向内核申请的一块内存空间,当 MySQL 进程重启时,不影响这块空间),最后MySQL45讲笔记
目录 MySQL基本架构与一条查询SQL的执行过程架构Server层存储引擎层 SQL在MySQL内部的执行过程连接器长连接与短连接解决方案 查询缓存分析器优化器执行器 MySQL基本架构与一条查询SQL的执行过程 架构 大体来说,MySQL可以分为Server层和存储引擎层两部分。 Server层MySQL45讲之生产环境下的性能问题
前言 本文介绍一些常见的性能问题,以及在生产环境下应该如何解决。 1. 短连接风暴 当由于大量短连接造成数据库性能低时,首先考虑一些无损安全的解决方案,如果是必须立刻提升一些数据库性能,那么可以考虑下面的方案。 第一种方法:处理掉占着连接但空闲的线程 类似 MySQL wait_timeoutMySQL45讲之order工作原理
前言 本文介绍 order 的三种排序方式,全字段排序、rowid 排序和索引树排序,以及每种排序方式具体是如何工作的。 当使用 explain 查看执行计划时,如果 extra 中有 Using filesort,表示经过了排序。 MySQL 会在内存中分配一块内存专门用来排序,可以通过 sort_buffer_size 设置大小。如果MySQL45讲之count操作
前言 本文介绍 MyISAM 和 InnoDB 如何执行 count 操作,如果是一个需要使用 count 进行大量计数的场景,应该如何设计实现,以及不同 count 操作的效率。 MyISAM和InnoDB的count MyISAM MyISAM 存储引擎的每个表记录了总行数,在没有 where 条件时,直接获取该记录值返回。 InnoDB InnoDB 获MySQL45讲之表空间回收
前言 本文介绍为什么删除了一部分表数据后,表文件大小不变,以及有哪些表空间回收的方式。 为什么删除表数据后,表文件大小不变 MySQL 采用的是标记删除,需要等待后台 purge 线程删除数据。但是,purge 线程删除数据后,表空间依然不会回收。 对于一个数据页,删除了其中若干行数据,因为还有其MySQL45讲之优化器选错索引
前言 本文简要介绍优化器选择索引的依据有哪些,有什么办法人为引导优化器选择更优的执行方案。 为什么会出现选错索引 可能是统计索引基数信息错误,导致优化器错选索引,也可能是MySQL的bug。 选择依据 优化器选择索引的依据有扫描行记录数、回表次数、是否创建临时表和是否排序。 索MySQL45讲之更新缓存
前言 本文介绍MySQL的更新缓存Change Buffer,以及唯一索引和普通索引如何选择。 唯一索引和普通索引的选择 查询过程 唯一索引下,查询索引树,找到第一条匹配的行就返回; 普通索引下,查询索引树,找到第一条匹配的行之后,继续往下遍历,直到第一条不匹配的行为止,再返回。 即使匹配的行跨了数mysql45讲(2)
更新语句的执行流程 连接数据库-----连接器 分析器------词法语法分析 优化器------找到最优的执行方案。(优化器的具体执行流程) 执行器------执行,更新 但是还有两个重要的日志模块,redo log(重做日志)和binlog(归档日志)《丁奇-MySQL45讲-02》之归纳总结
redo log(重做日志):采用了WAL(Write-Ahead Logging),即先写日志,在写磁盘,这里的描述很简洁,但却很容易理解错误,重做日志也有缓冲池(redo log buffer),所以这里的描述应该是先将修改的内容写到重做日志的缓冲池中,在更新内存中的数据页,最终会根据CheckPoint机制将脏页刷新到磁盘中,这里的脏页《丁奇-MySQL45讲-01》之归纳总结
01 | 基础架构:一条SQL查询语句是如何执行的? MySQL架构图 左侧图是丁奇老师原本的图,右侧是个人理解所画的,按照在文中的理论来说,个人认为应该是先查询缓存,如果查不到才会进行词法分析,比如有一条SQL:select * from T where ID = 10;,先去缓存中以该条SQL为key开始查询缓存,如果没查询学习资料----mysql45讲
mysql--45讲 请使用微信扫码,领取学习资料 示例图:MySQL45讲——日志系统:一条SQL更新语句是如何执行的 学习笔记
数据库备份:MySQL可以恢复到半个月内任意一秒的状态。 MySQL查询语句和更新语句的异同? 查询语句的执行流程更新语句也会走一遍。 执行语句前要先连接数据库,这是连接器的工作。 在一个表有更新时,跟这个表有关的查询缓存会失效,更新语句会把表上的所有缓存结果清空。因此,不建议