
Mysql
文章平均质量分 83
mysql原理学习
CodingALife
这个作者很懒,什么都没留下…
展开
-
Mysql基础(21):建立二级索引数据库索引
目录1、索引本质2、索引数据结构3、索引是怎么支撑千万级表的快速查找?4、如何基于索引b+树精准简历高性能索引?5、联合索引底层数据结构是怎么样的?1、索引本质 索引是帮助Mysql高效获取数据的排好序的数据结构2、索引数据结构 二叉树、红黑树、Hash表、B-TreeMysql从第一行将数据从磁盘load到内存与sql对比,每一次load叫做一次IO。此时给Col2添加索引,Col2作为一个二叉树,二叉树也存储在磁盘上。每个节点保存为一个map&...原创 2021-01-16 23:07:20 · 1459 阅读 · 0 评论 -
Mysql基础(二十):建立二级索引
1、MySQL CREATE INDEX语句通常,创建表的时候就能为表创建索引。 例如,以下语句创建一个新表,并创建了是由两列c2和c3组成的索引。CREATE TABLE t( c1 INT PRIMARY KEY, c2 INT NOT NULL, c3 INT NOT NULL, c4 VARCHAR(10), INDEX (c2,c3));但是要为列或一组列添加索引,可以使用CREATE INDEX语句,如下所示:CREATE INDEX ...原创 2021-11-22 22:17:31 · 3219 阅读 · 0 评论 -
Mysql基础(十九):锁
1、Mysql锁机制1.1、行锁mysql锁机制分为表级锁和行级锁。mysql行级锁包括共享锁与排他锁:共享锁又称为读锁,简称S锁 共享锁:多个事务都可以加共享锁读同⼀⾏数据,但是别的事务不能写这⾏数据。 一个事务获取了共享锁,其他事务也只能加共享锁或不加锁查询。 其他事务加排他锁就查不到,因为排他锁与共享锁不能存在同一数据上。 排他锁又称为写锁,简称X锁 排他锁:⼀个事务可以读/写这⾏数据,别的事务只能读不能写。 一个事务获取了一个数...原创 2021-11-13 18:19:05 · 5123 阅读 · 1 评论 -
Mysql基础(十八):主从架构
目录1、MySQL的主从复制架构2、主从复制架构的意义?2.1、高可用架构2.2、读写分离架构从库的应用场景?3、MySQL实现主从复制的工作原理4、如何为MySQL搭建一套主从复制架构?5、主从同步几种方式5.1、异步复制方式5.1.1、如何实现读写分离5.1.2、异步复制问题5.2、半同步复制方式6、主从复制架构中的数据延迟问题,应该如何解决?6.1、延迟6.2、为什么会产生这个主从延迟的问题呢?6.3、主从之间到底延迟了多少时间呢?.原创 2021-10-17 23:19:35 · 843 阅读 · 0 评论 -
Mysql基础(十七):SQL调优实战
1、千万级用户场景下的运营系统SQL调优(1)原创 2021-10-17 19:18:54 · 517 阅读 · 0 评论 -
Mysql基础(十六):explain命令SQL执行计划
写在前面每条SQL语句,mysql都会经过成本和规则的优化,对这个SQL选择对应的一些访问方法和顺序,包括做一些特殊的改写确保执行效率是最优的,然后优化过后,就会得到一个执行计划。 所谓的执行计划,落实到底层,无非就是先访问哪个表,用哪个索引还是全表扫描,拿到据之后如何去聚簇索引回表,是否要基于临时磁盘文件做分组聚合或者排序。1、通过explain命令得到的SQL执行计划(1)explain拿到这个SQL语句的执行计划:explain select ...原创 2021-10-17 18:59:50 · 1081 阅读 · 0 评论 -
Mysql基础(十三):性能抖动
1、原创 2021-10-15 21:07:57 · 1003 阅读 · 0 评论 -
Mysql基础(十四):索引
1、原创 2021-10-15 22:14:03 · 1118 阅读 · 0 评论 -
Mysql基础(十五):SQl执行计划和性能优化
1、2、原创 2021-10-16 01:17:13 · 956 阅读 · 0 评论 -
Mysql基础(十二):隔离/锁/MVCC/ReadView
1、业务系统并发对数据库执行事务在业务系统里会开启事务来执行增删改操作的,业务系统执行一个事务,每个事务里可能是一个或多个增删改语句业务系统很可能是基于多线程并发的对MySQL数据库去执行多个事务的,那么每个事务里面的多个SQL语句都是如何执行的呢? 这里就有很多问题了: 1)、多个事务并发执行的时候,可能会同时对缓存页里的一行数据进行更新,这个冲突怎么处理?是否要加锁? 2)、可能有的事务在对一行数据做更新...原创 2021-09-18 22:51:15 · 1890 阅读 · 2 评论 -
Mysql基础(十一):undo log回滚日志原理
目录1、事务回滚总结:2、INSRET语句的undo log回滚日志长什么样?1、事务回滚例如:一个事务里有4个增删改操作,结果目前为止已经执行了2个增删改SQL了,已经更新了一些buffer pool里的数据了,但是还有2个增删改SQL的逻辑还没执行,此时事务要回滚了怎么办?如果要回滚事务的话,那么必须要把已经在buffer pool的缓存页里执行的增删改操作给回滚。回滚日志记录的内容:你要是在缓存页里执行了一个insert语句,那么此时你在undo log...原创 2021-09-18 16:21:50 · 2078 阅读 · 0 评论 -
Mysql基础(十):redo log文件的样子
目录1、redo log含义2、redo log类型3、redo log格式4、redo log写磁盘过程4.1、redo log里记录了:4.2、redo log block4.3、redo log buffer4.4、写磁盘过程5、 redo log buffer中缓冲日志,什么时候可以写入磁盘?6、日志文件就用一个写入全部的redo log?1、redo log含义redo log里本质上记录的就是在对某个表空间的某个数据页的某个偏移量的...原创 2021-09-18 15:54:58 · 2056 阅读 · 0 评论 -
Mysql基础(九):一行数据在磁盘上是如何存储的?
1、对数据页中的每一行数据,他在磁盘上是怎么存储的? 行格式:我们可以对一个表指定行存储的格式,比如我们这里用一个 COMPACT格式。 CREATE TABLE table_name (columns) ROW_FORMAT=COMPACT ALTER TABLE table_name ROW_FORMAT=COMPACT 你可以在建表的时候,就指定一个行存储的格式,也可以后续修改行存储的格式。变长字段的长度列表,null值列表,数据头,column01的值,co...原创 2021-09-17 21:48:20 · 910 阅读 · 0 评论 -
Mysql基础(七):多线程并发访问Buffer Pool
1、多线程并发访问Mysql假设MySQL同时接收到了多个请求,他自然会用多个线程来处理这多个请求,每个线程会负责处理一个请求。 多个线程并发访问一个Buffer Pool,必须要加锁,然后让一个线程先完成一系列操作,比如说加载数据页到缓存页,更新free链表、lru链表、flush链表等,然后释放锁,接着下一个线程再执行一系列操作。 实际上,即使只有一个Buffer Pool,多个线程加锁排队执行,性能也不会很差。因为大部分情况下,每个线...原创 2021-09-17 19:40:52 · 1225 阅读 · 0 评论 -
Mysql基础(八):表空间、段、区、页的关系
目录1、表空间和数据区的概念表空间段(segment)区(extent)页(page)总结1、表空间和数据区的概念表空间 从 InnoDB 逻辑存储结构来看,所有的数据都被逻辑的存放在一个空间中,这个空间就叫做表空间(tablespace)。表空间由 段(segment)、区(extent)、页(page)组成。 当我们创建一个表之后,在磁盘上会有对应的表名称.ibd的磁盘文件。表空间的磁盘文件里面有很多的数据页,一个数据页最多...原创 2021-09-17 15:19:07 · 7466 阅读 · 0 评论 -
Mysql基础(六):Buffer Pool详细讲解
1、原创 2021-09-17 13:18:14 · 4712 阅读 · 2 评论 -
Mysql基础(五):真实生产环境的数据库机器配置
1、普通的Java应用系统部署在机器上能抗多少并发?配置经验值:Java应用系统部署的时候常选用的机器配置大致是2核4G和4核8G的较多一些 数据库部署的时候常选用的机器配置最低在8核16G以上,正常在16核32G。高并发线上经验值:一般Java应用系统部署在4核8G的机器上,每秒钟抗下500左右的并发访问量,差不多是比较合适的,当然这个也不一定。一台机器能抗下每秒多少请求,往往是跟你每个请求处理耗费多长时间是关联的。大体上来说,根据我们大量的经验观察而言,4核8G的机器部署普通的J...原创 2021-09-17 13:11:48 · 1488 阅读 · 0 评论 -
Mysql基础(四):Mysql架构设计
目录1、mysql架构设计2、InnoDB存储引擎架构2.1、InnoDB重要内存结构:缓冲池(Buffer Pool)2.2、数据更新过程2.3、日志含义redo.log与bin.log区别2.4、InnoDB存储引擎的架构原理1、mysql架构设计系统采用数据库连接池的方式去并发访问数据库,然后数据库自己其实也会维护一个连接池,其中管理了各种系统跟这台数据库服务器建立的所有连接。架构包含的组件:SQL接口、SQL解析器、查询优化器、执行器和存储...原创 2021-09-17 12:13:55 · 483 阅读 · 0 评论 -
Mysql基础(三):事务提交与回滚详解
1、SQL有 数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句;数据操作语言(DML),例如:INSERT、UPDATE、DELETE、SELECT语句;数据控制语言(DCL),例如: COMMIT、ROLLBACK、GRANT、REVOKE等语句2、COMMIT:提交事务2.1、查看事务状态:select @@autocommit; show variables like ‘%autocommit%’;1或者ON表示自动提交;0或者OFF表示手动提交:..原创 2021-09-16 23:13:40 · 3853 阅读 · 0 评论 -
Mysql基础(二):系统与Mysql连接原理
1、Mysql架构体系的第一个环节----连接池我们任何一个系统都会有一个数据库连接池去访问数据库,也就是说这个系统会有多个数据库连接,供多线程并发的使用。同时我们可能会有多个系统同时去访问一个数据库,这都是有可能的。 所以MySQL也必然要维护与系统之间的多个连接,所以MySQL架构体系中的第一个环节,就是连接池。 实际上MySQL中的连接池就是维护了与系统之间的多个数据库连接。除此之外,你的系统每次跟MySQL建立连接的时候,还会根据你传递过来的账号和密码...原创 2021-09-16 23:02:17 · 1386 阅读 · 0 评论 -
Mysql(10):Mac安装Mysql问题梳理
写在前面本文用于记录在Mac上安装Mysql时遇到的一些问题。1、Mac 终端如何切换成管理员用户打开终端输入 sudo su 然后回车 Password: ------(输入root密码即可) sh-3.2# -------- (输入执行的命令即可,例如 npm i -g npm 就是更新npm的最新版本)2、mysql修改密码报错解决方法原因:数据库版本较新,发生了改变旧版:SET PASSWORD FOR '用户名'@'主机名' =...原创 2021-09-16 21:55:53 · 288 阅读 · 0 评论 -
Mysql(4):SQL中on条件与where条件的区别
目录1、在使用left jion时,on和where条件的区别如下:数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。1、在使用left jion时,on和where条件的区别如下:1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。假设有两..转载 2021-08-09 16:05:02 · 682 阅读 · 0 评论 -
Mysql(3): limit offset用法
1、limit 用法:limit m, n;# 表示从跳过 m 条数据开始取n行数据# m 可选,表示跳过 m 条数据(默认为0)# n 必选,表示取几行数据-- 查询前 10 条数据select * from table_name limit 10;-- 以上写法等同于select * from table_name limit 0, 10;-- 查询 10-20 条数据select * from table_name limit 10, 10;2、limit 结合 of..原创 2021-08-09 12:00:17 · 2380 阅读 · 0 评论 -
Mysql(1):binlog原理与应用场景
目录0、写在前面1、基于binlog的主从复制2、binlog的应用场景2.1、读写分离2.2、数据恢复2.3、数据最终一致性2.4、异地多活2.5、小结3、Binlog事件详解3.1 多文件存储3.2、Binlog管理事件3.3、Statement模式下的事件3.4、Row模式下的事件3.4.1 binlog_row_image参数3.4.2 binlog_rows_query_log_events参数3.5、GTID相关事件4、总结转载 2021-07-15 01:56:38 · 1185 阅读 · 0 评论 -
Mysql(2):索引详解
目录1、什么是索引?2、索引的优点和缺点2、索引的常见类型有什么?3、索引采取什么数据结构存储?为什么采取这样的数据结构?4、为什么使用B+树?5、B-Tree6、B+-Tree7、为什么B+树比B 树更适合实际应用中操作系统的文件索引和数据库索引?8、B+树索引和哈希索引区别9、InnoDB和MyISAM存储引擎11、InnoDB索引和 MyISAM索引 的区别:12、索引的分类:13、什么时候需要创建索引14、什么时候不需要创建索引1、什么转载 2019-04-07 12:24:09 · 415 阅读 · 2 评论