合集-MySQL
摘要:普通索引 添加INDEX ALTER TABLE `table_name` ADD INDEX index_name (`column`) 主键索引 添加PRIMARY KEY ALTER TABLE `table_name` ADD PRIMARY KEY (`column`) 唯一性约束 添加U
阅读全文
摘要:查看表定义: show create table users; 查看表的索引: show index from users; 你要获取第一个表的所有信息,你说全表扫描快呢还是索引扫描快呢?所以当你查找库(包括left join中的临时库)的所有信息时,数据库会选择最优方法——全表扫描!!! /*s表
阅读全文
摘要:二叉查找树 二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值。 如下图所示就是一棵二叉查找树, 对该二叉树的节点进行查找发现深度为1的节点的查找次数为1,深度为2的查找次数为2,深度为n的节点的查找次数为n,因此其平均查找次数为 (1+2+2+3+3+3) / 6 = 2.3次
阅读全文
摘要:今天和同学探讨说MySQL哪些存储引擎支持hash索引,因为所看书籍MySQL版本和现有的MySQL版本有出入,故中间出了点歧义。所以就手动敲了一下代码,测试了一下MySQL8.0中的存储引擎是如何支持hash索引的。 我们都知道MySQL最常用的存储引擎为InnoDB和MyISAM。它们默认的存储
阅读全文
摘要:Ok,我们知道了,引擎就是一个程序的核心组件。 简单来说,存储引擎就是指表的类型以及表在计算机上的存储方式。 存储引擎的概念是MySQL的特点,Oracle中没有专门的存储引擎的概念,Oracle有OLTP和OLAP模式的区分。不同的存储引擎决定了MySQL数据库中的表可以用不同的方式来存储。我们可
阅读全文
摘要:一、EXPLAIN介绍 MySql提供了EXPLAIN语法用来进行查询分析,在SQL语句前加一个"EXPLAIN"即可。比如我们要分析如下SQL语句: 运行上面的sql语句后你会看到,下面的表头信息: table | type | possible_keys | key | key_len | re
阅读全文
摘要:explain执行计划包含的信息 其中最重要的字段为:id、type、key、rows、Extra 各字段详解 id select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序 三种情况: 1、id相同:执行顺序由上至下 2、id不同:如果是子查询,id的序号会递增,id值
阅读全文
摘要:一、简介 MySQL 慢查询日志是排查问题 SQL 语句,以及检查当前 MySQL 性能的一个重要功能。 查看是否开启慢查询功能: mysql> show variables like 'slow_query%'; + + + | Variable_name | Value | + + + | sl
阅读全文
摘要:一、如何保障mysql和redis之间的数据一致性? 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问Mysql等数据库。这样可以大大缓解数据库的压力。Redis缓存数据的加载可以分为懒加载和主动加
阅读全文
摘要:一、常用引擎间的区别 MyISAM 操作数据都是使用的表锁,你更新一条记录就要锁整个表,导致性能较低,并发不高。当然同时它也不会存在死锁问题。 而 InnoDB 与 MyISAM 的最大不同有两点:一是 InnoDB 支持事务;二是 InnoDB 采用了行级锁。 在 Mysql 中,行级锁并不是直接
阅读全文
摘要:一、代码优化 发现接⼝实现类中有个地⽅做了代码同步控制synchorized,分析后感觉没必要就去掉了,性能提⾼到7秒左右,虽然提⾼了,⼤还是不⾏,进⼀步优化。 二、数据库配置修改01 数据库安装时,没有修改任何配置,全部为默认配置,⽹上查询解决⽅案: (一)解决方案 set global sync
阅读全文
摘要:MySQL 事务 本文所说的 MySQL 事务都是指在 InnoDB 引擎下,MyISAM 引擎是不支持事务的。 数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做,其实不是没做,是可能做了一部分但是只要有一步失败,就要回滚所有操作,有点一不做二不休的意思。 假
阅读全文
摘要:一、去重,去除多个字段相同的记录,保留一个 场景一:去除表中所有重复数据,均只保留一个 delete from tbl_dept where dept_id not in ( select id from ( select min(dept_id) as id from tbl_dept group
阅读全文
摘要:MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。 下图就描述了一个多个数据库间主从复制与读写分离的模型(来源网络): 在一主多从的数据库体系中,多个从服务器采用异步的方式更
阅读全文
摘要:1、页 在 MySQL 中 InnoDB 存储引擎的最小存储单元是页(大小默认是16k,可通过参数设置)。页可用于存放B+树叶节点数据,也可用于存放B+树非叶节点的 “键 + 指针”(也就是路径节点)。 在查找数据时一次页的查找代表一次 IO,一般B+树高大约为1~3层,所以通过主键索引查询通常只需
阅读全文
摘要:一、前引 相信大家 MySQL 都用了很久了,各种 join 查询天天都在写,但是 join 查询到底是怎么查的,怎么写才是最正确的,今天我就和大家一起学习探讨一下 二、索引对 join 查询的影响 1. 数据准备 假设有两张表 t1、t2,两张表都存在有主键索引 id 和索引字段 a,b 字段无索
阅读全文
摘要:问题:当出现某些特殊场景,一个事务A需要在未提交之前,一定要读取的是事务B提交的最新数据,该如何处理? 在MySQL中,事务隔离级别:读未提交、读提交、可重复读、串行化。 一、读未提交 读未提交会读到其它线程未提交的脏数据,虽然可以一直读到数据,但大部分都是脏数据,所以无法保证是最新有效的数据。 二
阅读全文
摘要:这是一篇学习后的心得分享,在正文之前,我们需要对一些索引的基本概念进行说明讲解。 1. 什么是索引? 索引(在 MySQL 中也叫“键key”)是存储引擎快速找到记录的一种数据结构,通俗来说类似书本的目录,这个比方虽然被用的最多但是也是最恰如其当的,在查询书本中的某个知识点不借助目录的情况下,往往都
阅读全文
摘要:比较简单的是单列索引(b+tree)。遇到多条件查询时,不可避免会使用到多列索引。联合索引又叫复合索引。 b+tree结构如下: 每一个磁盘块在mysql中是一个页,页大小是固定的,mysql innodb的默认的页大小是16k,每个索引会分配在页上的数量是由字段的大小决定。当字段值的长度越长,每一
阅读全文
摘要:一、前言 本文将基于Docker部署2台MySQL服务实现主从同步,即主master用于写(增删改),从slave用来读(查) 二、Docker搭建MySQL实现主从同步 1、master(主)配置 ① 创建所需文件夹,用于映射容器相应文件路径 mkdir -p /IT_zhengqing/soft
阅读全文