首页 > 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 in

MySQL45讲-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_START

MySQL45讲之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_timeout

MySQL45讲之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查询语句和更新语句的异同? 查询语句的执行流程更新语句也会走一遍。 执行语句前要先连接数据库,这是连接器的工作。 在一个表有更新时,跟这个表有关的查询缓存会失效,更新语句会把表上的所有缓存结果清空。因此,不建议