随笔分类 -  Mysql

摘要:索引的本质:索引是帮助Mysql高效获取数据的排好序的数据结构 1. 索引的数据结构 1.1 二叉树 问题: 树的深度比较深,查询一个索引会有很多的磁盘I/O 1.2 红黑树 平衡二叉树 问题: 平衡二叉树会对树进行平衡,但是当数据有100万时,2^20 = 1024 * 1024 ,此时树的高度就 阅读全文
posted @ 2023-03-09 22:54 雾里看花的少年 阅读(55) 评论(0) 推荐(0)
摘要:1.数据准备 创建表 CREATE TABLE `employees` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int NOT NULL DEFAUL 阅读全文
posted @ 2023-03-09 22:48 雾里看花的少年 阅读(67) 评论(0) 推荐(0)
摘要:SELECT message_id+1 from message_transmit_record a where not EXISTS ( select * from message_transmit_record b where b.message_id=a.message_id+1 ) AND 阅读全文
posted @ 2022-09-13 19:29 雾里看花的少年 阅读(51) 评论(0) 推荐(0)
摘要:今天遇到了一个列表分页查询很慢的接口 1. 分析列表查询语句 列表查询语句关联了大约5张表,最后sql打印了limit 0,20 将sql放到数据库执行,500ms,语句分析索引全部命中 所以慢这里并不是列表查询慢 2. 分析count(*)语句 打印sql日志,可以看到count(*)的执行耗时达 阅读全文
posted @ 2022-05-17 19:45 雾里看花的少年 阅读(297) 评论(0) 推荐(0)
摘要:一般而言区分度很差的字段没必要建索引,但是这种也要视情况而定。 原因 存储引擎底层,我们经常听到,不走索引而走全表扫描。那么底层为什么不走索引而走全表扫描。 这里涉及到聚集索引和非聚集索引,对于非聚集索引值,查询的字段如果包含非索引字段,就会通过聚集索引主键从聚集索引中查询出需要查询出来的数据,也就 阅读全文
posted @ 2022-05-09 22:48 雾里看花的少年 阅读(1036) 评论(0) 推荐(0)
摘要:这里的知识点来源于博客总结 count(col):统计某列有值的结果数,即col is not null 的值 count(*): 统计表的字段数 MyISAM存储引擎 myisam引擎本身存储了一个特殊的字段,值是总行数 count(*): 会直接读取这个特殊的值,如果添加了where条件之后,并 阅读全文
posted @ 2022-05-09 22:16 雾里看花的少年 阅读(75) 评论(0) 推荐(0)
摘要:select (@i:=@i+1) No,t.* from tableName t,(select @i:=0) init 阅读全文
posted @ 2021-12-22 14:17 雾里看花的少年 阅读(36) 评论(0) 推荐(0)
摘要:Mysql权限管理也是通过mysql表来管理的 本文基于mysql8 身份验证: 优先从mysql.user中判断ip、用户名、密码是否存在,存在即通过验证。 权限认证: 按照mysql.user、db、tables_priv、columns_priv、procs_priv顺序验证,如果对应权限值为 阅读全文
posted @ 2021-11-30 12:21 雾里看花的少年 阅读(1022) 评论(0) 推荐(0)
摘要:使用docker部署在mysql8主从复制 docker pull mysql:8.0.16 1. 主机配置 新建挂载目录 mkdir -p /usr/mysql/conf /usr/mysql/data 修改目录权限 chmod -R 755 /usr/mysql/ 修改配置文件 vi /usr/ 阅读全文
posted @ 2021-11-29 15:06 雾里看花的少年 阅读(153) 评论(0) 推荐(0)
摘要:关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。 数据库分布式核心内容无非就是数据 阅读全文
posted @ 2021-11-29 10:45 雾里看花的少年 阅读(60) 评论(0) 推荐(0)
摘要:1. Mysql内部结构 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 1.1 Server层 主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数 (如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实 阅读全文
posted @ 2021-11-25 16:35 雾里看花的少年 阅读(235) 评论(0) 推荐(0)
摘要:Explain 模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是 执行这条SQL 如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中 expl 阅读全文
posted @ 2021-11-25 16:34 雾里看花的少年 阅读(46) 评论(0) 推荐(0)
摘要:最近在看Mysql的Innodb存储引擎的存储结构,采用B+树,然后一个同事和我说现在磁盘都变成固态硬盘了,B+树的作用不大了,而且MongoDb使用的是B树,然后我开始想MongoDb为什么使用B树。 于是开启了百度之旅,结果发现MongoDb底层使用的也是B+树。而且很多博客说的都是错的 Mon 阅读全文
posted @ 2021-11-12 19:06 雾里看花的少年 阅读(242) 评论(0) 推荐(0)
摘要:1. 概述 数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能 就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 为了解决多事务并发问题,数据库设计了事务隔离机制、锁机制、MVCC多版本并发控制隔离机制,用一整套机制来解决多事务并发问题 2. 事务属性A 阅读全文
posted @ 2021-11-08 22:26 雾里看花的少年 阅读(57) 评论(0) 推荐(0)
摘要:1 .普通安装 1.1 安装5.7 wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm yum -y localinstall mysql57-community-release-el7-11.noar 阅读全文
posted @ 2021-11-05 15:16 雾里看花的少年 阅读(146) 评论(0) 推荐(0)
摘要:Mysql的优化,一般是对索引优化,这里主要以innodb为主 索引是帮助MySQL高效获取数据的排好序的数据结构,排好序是索引数据结构的特点,也是索引优化的前提。 1. 索引数据结构 索引底层使用B+树作为其底层存储结构。相较于二叉树、红黑树、hash表、B树而言,B+树有自己独特的优势。 B+树 阅读全文
posted @ 2021-11-03 18:02 雾里看花的少年 阅读(1181) 评论(0) 推荐(0)
摘要:Mysql查询变慢了,你可能最先想到的就是,索引加了没? 1. 基本概念 聚簇索引:具有一下两种特性的索引: 使用记录主键值的大小进行记录和页的排序 页内的记录是按照主键的大小顺序排成一个单向链表 各个存放用户记录的页也是根据页中用户记录的主键大小顺序排成一个双向链表 存放目录项记录的页分为不同的层 阅读全文
posted @ 2021-09-13 17:59 雾里看花的少年 阅读(60) 评论(0) 推荐(0)