![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 79
小乐乐的天台
这个作者很懒,什么都没留下…
展开
-
MySql存储引擎
Mysql存储引擎原创 2022-11-07 20:41:35 · 446 阅读 · 0 评论 -
Innodb引擎SQL执行的BufferPool缓存机制
Innodb引擎SQL执行的BufferPool缓存机制1、先给一张图2、大概写一下这张图的流程3、为什么Mysql不能直接更新磁盘上的数据而且设置这么一套复杂的机制来执行SQL了?1、先给一张图2、大概写一下这张图的流程1、来一条非查询语句,经过连接器、分析器、优化器,再到执行器,执行器,执行后面步骤。2、加载根据where条件过滤出来的数据,将符合条件的整页数据都放到缓存池 buffer pool 中。3、将 buffer pool中的数据写到 undo 日志文件中,这个文件是事务回滚时使原创 2022-01-21 10:11:01 · 351 阅读 · 0 评论 -
Mysql的MVCC---多版本并发控制机制
Mysql的MVCC---多版本并发控制机制MVCC(Multi-Version Concurrency Control)—多版本并发控制机制,是一种可以避免加锁来控制事务的隔离级别的一种机制,区别于串行化的加锁方式。Mysql在读已提交和可重复读隔离级别下都实现了MVCC机制。2、MVCC的核心概念2.1、undo日志版本链undo日志版本链是指一行数据被多原创 2022-01-21 10:07:46 · 372 阅读 · 0 评论 -
Mysql的事务与锁机制简介
Mysql的事务与锁机制简介1、事务1.1、什么是事务?1.2、事务的ACID属性1.3、并发事务会带来的问题1.4、事务隔离级别2、锁2.1、锁分类2.2、锁详解2.2.1、乐观锁2.2.2、悲观锁2.2.3、读锁2.2.4、写锁2.2.5、表锁2.2.6、行锁2.2.7、间隙锁2.2.8、临键锁(Next-key Locks)2.3、无索引行锁会升级为表锁2.4、行锁分析2.5、锁优化1、事务1.1、什么是事务?事务是由一组SQL语句组成的逻辑处理单元,通常包含多个操作。1.2、事务的ACI原创 2022-01-21 09:50:40 · 1159 阅读 · 0 评论 -
Mysql的索引优化、设计原则
Mysql的索引优化、设计原则1、索引优化点2、索引设计原则2.1、代码先行,索引后上2.2、联合索引尽量覆盖条件2.3、不要在小基数字段上建立索引2.4、长字符串我们可以采用前缀索引2.5、where与order by冲突时优先where2.6、基于慢sql查询做优化1、索引优化点1、MySQL支持两种方式的排序filesort和index,Using index是指MySQL扫描索引本身完成排序。index 效率高,filesort效率低。2、order by满足两种情况会使用Using ind原创 2022-01-21 09:37:46 · 580 阅读 · 0 评论 -
Mysql中的straight_join
Mysql中的straight_join1、什么是straight_join?2、举栗子3、需要注意的点1、什么是straight_join?straight_join功能同join类似,但能让左边的表来驱动右边的表,能改表优化器对于联表查询的执行顺序。2、举栗子select * from t2 straight_join t1 on t2.a = t1.a;比如上面这个,如果我们事先知道t2表的数据量一定小于t1表的话,我们就可以使用上面的方式指定t2表为驱动表。3、需要注意的点原创 2022-01-21 09:33:24 · 8398 阅读 · 0 评论 -
Mysql-表连接join中的NLJ、BNL算法
Mysql-表连接join中的NLJ、BNL算法1、什么是NLJ算法?2、什么是BNL算法?3、被驱动表的关联字段没索引为什么要选择使用 BNL 算法而不使用 Nested-Loop Join 呢?1、什么是NLJ算法?NLJ:Nested-Loop Join(嵌套循环连接)。一次一行循环地从第一张表(称为驱动表)中读取行,在这行数据中取到关联字段,根据关联字段在另一张表(被驱动表)里取出满足条件的行,然后取出两张表的结果合集。就比如说下面这条sql语句:驱动表:驱动表会选取数据量比较小的一张表原创 2022-01-21 09:32:00 · 4001 阅读 · 0 评论 -
Mysql的文件排序(filesort)
Mysql的文件排序(filesort)1、什么是文件排序?2、缓存区 sort buffer3、单双路排序3.1、单路排序3.2、双路排序1、什么是文件排序?文件排序,也叫 filesort ,通常我们在Mysql中使用explain关键字时就可以看到如下所示,在Extra列中就是文件排序。含义:文件排序的含义是排序的过程将用外部排序而不是索引排序,数据较小时从内存排序,否则需要在磁盘完成排序。这种情况下一 般也是要考虑使用索引来优化的。2、缓存区 sort bufferMysql会给s原创 2022-01-20 17:52:35 · 2861 阅读 · 0 评论 -
Mysql索引下推
Mysql索引下推1、什么是索引下推?2、索引下推是从什么时候有的?3、索引下推的意义在哪里?4、范围查找一般不走索引下推(>、<、=)1、什么是索引下推?比如说下面这条语句(前提是联合索引为name,age,position),通常情况下,对于第一个name是范围查询,后面的索引就不会生效了,然后在Mysql5.6以及5.6之后的版本是会先让条件变成 name = ‘LiLei’ 这样的常量值(这块不一定对,但是可以这样理解),然后把后面的索引也用上,这就是索引下推。EXPLAIN原创 2022-01-20 17:43:55 · 350 阅读 · 0 评论 -
Mysql的Explain详解
Mysql的Explain详解1、什么是Explain?2、Explain的两个变种2.1、explain extended2.2、explain partitions3、explain展示出来的数据列详解3.1、id列3.2、select_type列3.2.1、simple---简单查询3.2.2、primary---复杂查询3.2.3、subquery---子查询3.2.4、derived---衍生查询3.2.5、union---联合查询3.3、table列3.4、type列3.4.1、const, s原创 2021-12-10 11:47:31 · 4902 阅读 · 0 评论 -
Linux上Mysql-5.7.30安装
Linux上Mysql-5.7.30安装1、准备工作2、Mysql安装2.1、上传Mysql包并解压2.2、创建Mysql组和Mysql用户2.3、创建data目录2.4、创建Mysql的配置文件 my.cnf2.5、初始化Mysql数据库2.6、修改服务启动文件mysql.server2.7、创建localhost.localdomain.pid文件2.8、创建mariadb.log文件2.9、删除/etc/my.cnf2.10、启动Mysql服务3、Mysql连接4、修改Mysql的用户密码5、使用na原创 2021-12-08 17:28:56 · 3475 阅读 · 5 评论 -
MySql索引
MySql索引概念:索引是帮助MySql高效获取数据的排好序的数据结构。2、索引的数据结构1、二叉树二叉树特点:节点左孩子比节点的值小,节点右孩子比节点的值大。二叉树简介:在使用这种数据结构时,就相当于是将数据简单排了个序,可以减少查找数据的次数。二叉树缺点:缺点就是当数据是递增或者递减 的时候会出现如下图所示的情况,索引MySql底层没有用二叉树作为索引的原创 2020-07-29 00:00:16 · 374 阅读 · 2 评论 -
Windows上解压版MySql-8.0.19安装配置
解压版MySql配置1、MySql配置1、下载并解压MySql软件2、MySql初始化配置1、以管理员身份打开命令行2、进入到MySql解压后目录下的Bin文件夹下3、输入命令mysqld --install,进行MySql安装4、输入命令mysqld --initialize --console5、输入命令net start mysql(开启MySql服务)6、输入命令mysql -u root -p,登录2、辅助操作1、修改登录密码3、设置全局变量4、本地Navicat连接数据库1、MySql配置1原创 2020-05-22 18:14:40 · 352 阅读 · 0 评论