【数据库】-- MySQL
文章平均质量分 94
MYSQL
后端元宇宙
这个作者很懒,什么都没留下…
展开
-
一文整理14道MySQL索引相关面试题
精心整理14道MySQL索引相关面试题(珍藏版)如果仅仅是死记硬背MySQL索引相关面试题一定是相当枯燥的,不容易记却容易忘,这里循序渐进的讲解有关索引有关知识点,让大家在理解的基础上记住一些面试常问的点。什么是索引?索引的优缺点?什么情况下需要建索引?什么情况下不需要建索引?索引有哪几种分类?索引的数据结构有哪些?Hash索引和B+树索引的区别?为什么B+树比B树更适合实现数据库索引?聚集索引相对于非聚集索引的区别?什么是回表查询?什么是覆盖索引?什么是最左匹配原则?索引失效原创 2022-01-05 18:55:46 · 8101 阅读 · 1 评论 -
看一遍就懂:MVCC原理详解
MVCC实现原理也是一道非常高频的面试题,自己在整理这篇文章的时候,感觉到网上的资料在讲这块知识点上写的五花八门,好像大家的理解并没有一致。这里将自己所理解的做一个总结,个人会觉得这是一篇含金量挺高的一篇文章(哈哈),所以请你坚持认真的看下去,一定会对你有收获。如果文章中哪里没有理解,或者认为我讲的不对的地方,都欢迎留言一起交流哈。前言一些基本概念我这里不在做阐述了。好比什么是事务? 事务的ACID? 四大隔离级别?有关事务并发存在的问题之前有写过一篇文章:一文详解脏读、不可重复读、幻读如果你.原创 2021-12-30 22:45:52 · 4034 阅读 · 8 评论 -
手把手教你分析解决MySQL死锁问题
在生产环境中如果出现MySQL死锁问题该如何排查和解决呢,本文将模拟真实死锁场景进行排查,最后总结下实际开发中如何尽量避免死锁发生。一、准备好相关数据和环境当前自己的数据版本是8.0.22mysql> select @@version;+-----------+| @@version |+-----------+| 8.0.22 |+-----------+1 row in set (0.00 sec)数据库隔离级别(默认隔离级别)mysql> select @@.原创 2021-12-28 22:35:35 · 1949 阅读 · 1 评论 -
MySQL记录锁、间隙锁、临键锁小案例演示
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章一文详解MySQL的锁机制这篇主要通过小案例来对记录锁、间隙(gap)锁、临键(next-key)锁做一个更好的理解。这里先给出结论,再来用实际例子证明1、当使用唯一索引来等值查询的语句时, 如果这行数据存在,不产生间隙锁,而是记录锁。2、当使用唯一索引来等值查询的语句时, 如果这行数据不.原创 2021-11-24 17:46:26 · 332 阅读 · 1 评论 -
一文详解MySQL的锁机制
一、表级锁、行级锁、页级锁数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别。MySQL各存储引擎使用了三种类型(级别)的锁定机制:表级锁定,行级锁定和页级锁定。1、表级锁表级别的锁定是MySQL各存储引擎中最大颗粒度的锁定机制。该锁定机制最大的特点是实现逻辑非常简单,带来的系统负面.原创 2021-11-18 20:31:56 · 1797 阅读 · 1 评论 -
MySQL(11)---约束
#MySQL(11)—约束含义: 一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性。先把Mysql几种约束列出来:主键约束 外键约束 唯一性约束 非空约束 默认值约束 自增约束MySQL不支持check约束,但可以使用check约束,而没有任何效果。 一、语法不多说理论,说下语法和示例就好。1、建表时直接建约束drop table student;C...原创 2019-07-28 21:06:20 · 175 阅读 · 0 评论 -
MySQL(12)---纪录一次left join一对多关系而引起的BUG
MySQL(11)—纪录一次left join一对多关系而引起的bugBUG背景 我们有一个订单表 和 一个 物流表 它们通过 订单ID 进行一对一的关系绑定。但是由于物流表在保存订单信息的时候没有做判断该订单是否已经有物流信息,这就变成同一个订单id在物流表中存在多条数据,也就变成了本来订单表只有100条纪录,而left join 物流表后,所查询的订单数据远远大于100条。总结 趁着上面...原创 2019-07-28 21:05:42 · 640 阅读 · 1 评论 -
MySQL(10)---自定义函数
MySQL(10)—自定义函数之前讲过存储过程,存储过程和自定义函数还是非常相似的,其它的可以认为和存储过程是一样的,比如含义,优点都可以按存储过程的优点来理解。存储过程相关博客:1、MySQL(7)—存储过程2、MySQL(8)—游标3、MySQL(9)—纪录一次实际开发过程中用到的复杂存储过程它们唯一不不同点在于存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新...原创 2019-07-28 21:03:54 · 379 阅读 · 0 评论 -
MySQL(9)---纪录一次实际开发过程中用到的复杂存储过程
Mysql(9)—纪录一次实际开发过程中用到的复杂存储过程为了尽可能的还原当时为什么需要用到存储过程,下面我写了个详细的文档,我们可以从需求文档出发来分析。有关存储过程之前也写了两篇文章来做铺垫。1、Mysql(7)—存储过程2、Mysql(8)—游标 一、需求背景一个服装类的app商城,用户会员等级分:普通会员,vip会员,钻石会员。现在在app上发布一款商品,但发布是可以设置该商...原创 2019-07-28 21:03:16 · 243 阅读 · 0 评论 -
MySQL(8)---游标
Mysql(8)—游标上一遍博客写了有关存储过程的语法知识 Mysql(7)—存储过程游标或许你在工作中很少用到,但用不到不代表不去了解它,但你真正需要它来解决问题的时候,再花时间去学习很可能会影响你的工作进度。注意:MySQL游标只能用于存储过程(和函数)。游标主要用于交互式应用。 一、概述####1、定义游标是一个存储在MySQL服务器上的数据库查询,它不是一条select语句...原创 2019-07-28 21:02:38 · 321 阅读 · 0 评论 -
MySQL(7)---存储过程
Mysql(7)—存储过程存储过程接下来会有三篇相关博客第一篇存储过程常用语法。第二篇存储过程中的游标。第三篇单独讲一个实际开发过程中复杂的真实的案例。## 一、概述 1、什么是存储过程概述:简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法;说明 :存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比...原创 2019-07-28 21:01:50 · 280 阅读 · 0 评论 -
MySQL(6)---变量
MySQL(6)-变量这里学习变量主要是为后面学习存储过程和函数做铺垫。变量的分类系统变量: 全局变量 会话变量自定义变量: 用户变量 局部变量 一、系统变量 1、概述说明:变量由系统定义,不是用户定义,属于服务器层面。注意:全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认会话级别。使用步骤:# 1、查看所有系统...原创 2019-07-28 21:01:08 · 103 阅读 · 0 评论 -
Redis(4)---主从复制
Redis主从复制一、环境搭建 既然是主从复制,那肯定需要多个redis服务器,下面我先创建3个服务器,™的端口号分别是:6379、6380、6381。 1、复制默认配置文件redis.conf,放到rediszhucong文件夹中,并重命名。 根据每个端口号不同,重新配置conf文件 (1)端口号 (2)开启线程守护 (3)Pid文件名字 (4)Log文件名字 (5)Du...原创 2018-06-29 00:04:51 · 189 阅读 · 0 评论 -
MySQL(5)---锁
锁 一概述 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制。MySQL各存储引擎使用了三种类型(级别)的锁定机制:表级锁定,行级锁定和页级锁定。MySQL大致可归纳为以下3种锁: 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行...原创 2018-06-24 11:57:35 · 137 阅读 · 0 评论 -
MySQL(4)---慢查询
慢查询 简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。一、配置慢查询1、参数说明 slow_query_log : 慢查询开启状态(默认关闭) slow_query_log_file : 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限, 一般设置为MySQL的数据存放目录)...原创 2018-06-24 11:57:03 · 155 阅读 · 0 评论 -
MySQL(3)---MySQL优化
MySQL优化 一、单表、双表、三表优化1、单表 首先结论就是,range类型查询字段后面的索引全都无效(1)建表create table if not exists article( id int primary key auto_increment, author_id int not null, category_id int not null, view...原创 2018-06-24 11:56:28 · 150 阅读 · 0 评论 -
MySQL(2)---Explain
Explain什么是explain 使用explain关键字,可以模拟优化器执行SQL语句查询,从而知道MySQL如果处理你的SQL语句,分析语句的性能瓶颈。explain 分析sql语句 使用explain关键字可以模拟优化器执行sql查询语句,从而得知MySQL 是如何处理sql语句。+----+-------------+-------+------------+------+...原创 2018-06-24 11:55:54 · 143 阅读 · 0 评论 -
MySQL(1)---索引
索引 什么是索引? 索引是帮助Mysql提高获取数据的数据结构,换一句话讲就是“排好序的快速查找的数据结构”。一.索引的分类 MySQL主要的几种索引类型:1.普通索引、2.唯一索引、3.主键索引、4.组合索引、5.全文索引。 1.普通索引 是最基本的索引,它没有任何限制。 2.唯一索引 与普通索引类似,不同的就是:索引列的值...原创 2018-06-24 11:55:26 · 186 阅读 · 0 评论