![](https://img-blog.csdnimg.cn/20210214165816848.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 81
MySQL常见面试题解析
叫我峰兄
星光不问赶路人,干就完了!
展开
-
MySQL的14个小技巧
我最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。原创 2023-01-29 11:03:46 · 474 阅读 · 0 评论 -
mysql的DISTINCT
实际上返回的是 id与type同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得id与tyoe都相同的才被排除了,与我们期望的结果不一样 // 但这里是我希望的。返回的结果是 只有id不同的所有结果和上面的4类型可以互补使用,就是看你需要什么样的数据了。虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据)mysql的DISTINCT的关键字有很多你想不到的用处。2,在需要返回记录不同的id的具体值的时候可以用。返回talbebname表中不同的id的具体的值。..原创 2022-08-26 09:30:38 · 287 阅读 · 0 评论 -
SQL调优及定位慢查询
一.开启慢查询日志MySQL 中与慢 SQL 有关的几个重要系统变量如下:执行如下语句看是否启用了慢查询日志,ON 为启用,OFF 为未启用,默认为 OFF。SHOW VARIABLES LIKE '%slow_query_log%';可以看到,我这里是已经开启了的。如果你的没有开启,可以使用如下两种方式来开启慢查询。2.1 修改配置文件修改配置文件 vim /etc/my.cnf,在 [mysqld] 段落在加入如下配置:[mysqld] slow_quer...转载 2022-04-22 15:56:36 · 257 阅读 · 0 评论 -
mysql MVCC+间隙锁解决幻读理解
mysql的隔离级别?读未提交 -》 读提交 -》 可重复读 -》 串行化InnoDB默认级别为可重复读,可重复读会产生问题 就是幻读。什么是幻读?不可重复读侧重于update这种操作,同一条数据前后读起来不一样的情况,幻读侧重于insert delete这种操作,前后两次select 数据的数量会发生变化举个例子:事务A 第一步 select * 第二步 update 所有字段 第三步 再次select *事务B 执行了insert 一条语句幻读第一转载 2021-06-09 23:07:31 · 771 阅读 · 0 评论 -
MySQL到底是如何解决幻读问题
要知道什么是幻读,首先要知道以下四点:一、幻读定义幻读是指在同一个事务中,存在前后两次查询同一个范围的数据,但是第二次查询却看到了第一次查询没看到的行,一般情况下特指事务执行中新增的其他行。二、幻读示例测试表数据:mysql> select * from LOL;+----+--------------+--------------+-------+| id | hero_title | hero_name | price |+----+--------------+----转载 2021-06-04 09:43:33 · 244 阅读 · 0 评论 -
Redis与MySQL双写一致性如何保证?
四月份的时候,有位朋友去美团面试,他说被问到Redis与MySQL双写一致性如何保证? 这道题其实就是在问缓存和数据库在双写场景下,一致性是如何保证的?本文将跟大家一起来探讨如何回答这个问题。谈谈一致性一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大弱一致性:这种一致性级别约束了系统在写入成功后,不承诺立即可以读到写入的值,也不承诺多久之转载 2021-05-21 14:26:33 · 267 阅读 · 0 评论 -
正确的理解MySQL的MVCC及实现原理
一.MVCC多版本并发控制前提概要- 什么是MVCC- 什么是当前读和快照读?- 当前读,快照读和MVCC的关系MVCC实现原理- 隐式字段- undo日志- Read View(读视图)- 整体流程MVCC相关问题- RR是如何在RC级的基础上解决不可重复读的?- RC,RR级别下的InnoDB快照读有什么不同?前提概要什么是MVCC?MVCCMVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方转载 2021-05-19 17:03:18 · 247 阅读 · 0 评论 -
MySQL 中 MyISAM 中的查询为什么比 InnoDB 快?
关于,这个问题,我网上看了很多答案。大多内容都雷同,但是我要强调的是,并不是说 MYISAM 一定比 InnoDB 的 select 快。其实呢?MyISAM 适合读多,并发少的场景;这个问题要分场景来看。不同的场景,还真不能说 MyISAM 比 InnoDB 中的查询快!下面我们一起来看看 Innodb 和 Myisam 的 5 大区别:上面的“事务”写错了。不过,我相信大家能看明白其中的解释。关于“行锁”还是“表锁”,可以看我的这篇文章《InnoDB 的 select 行锁还是表锁》。关于转载 2021-05-14 14:39:16 · 234 阅读 · 0 评论 -
MongoDB快还是MySQL快
一.两者默认存储引擎的默认数据结构MySQL 中使用 B+ 树是因为 B+ 树只有叶节点会存储数据,将树中的每一个叶节点通过指针连接起来就能实现顺序遍历,而遍历数据在关系型数据库中非常常见,所以这么选择是完全没有问题的。MongoDB默认是B树,MySQL默认是B+树。为什么这样选择,是因为两者的使用场景不同。一般MongoDB查单条数据的情景比较多,使用B树作为索引底层数据结构,因为索引节点可以存储数据,所以就不需要去叶子节点获取数据了。所以查询一条数据所需要的平均随机 IO 次数会比 B+ 树少,使原创 2021-05-14 14:13:27 · 4964 阅读 · 0 评论 -
间隙锁
一.几个基本概念行锁:给某一行加的锁间隙锁:就是两个值之间的间隙。为了解决幻读问题,InnoDB 只好引入新的锁,也就是 间隙锁 (Gap Lock)。间隙锁Gap,左右都是开区间,间隙锁+行锁合称next-key lock,每个 next-key lock 是前开后闭区间。间隙锁和next-key lock的引入帮我们解决幻读问题。二. 什么是幻读?幻读指的是一个事务在 前后两次查询同一个范围的时候,后一次查询看到了前一次查询没有看到的行。可以看到,session A 里执行了三次查询,原创 2021-05-07 09:50:36 · 15021 阅读 · 10 评论 -
Mysql最左匹配原则
最左匹配原则最左匹配原则就是指在联合索引中,如果你的 SQL 语句中用到了联合索引中的最左边的索引,那么这条 SQL 语句就可以利用这个联合索引去进行匹配。例如某表现有索引(a,b,c),现在你有如下语句:select * from t where a=1 and b=1 and c =1; #这样可以利用到定义的索引(a,b,c),用上a,b,cselect * from t where a=1 and b=1; #这样可以利用到定义的索引(a,b,c),用上a,bselect转载 2021-04-26 12:12:55 · 172 阅读 · 0 评论 -
EXPLAIN用法及结果分析
1. EXPLAIN简介使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。➤ 通过EXPLAIN,我们可以分析出以下结果:表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些索引被实际使用表之间的引用每张表有多少行被优化器查询➤ 使用方式如下:EXPLAIN +SQL语句EXPLAIN SELECT * FROM t12. 执行计划各字段含义2.1 idselect查询的序列转载 2021-04-26 11:49:56 · 1598 阅读 · 0 评论 -
MySQL一条语句的执行过程
一.我们先来看一下,MySQL的基本架构示意图大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核 心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引 擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、 MyISAM、Memory 等多个存储引擎。二 下面我们依次看一下每个组件的作用原创 2021-03-07 13:12:37 · 182 阅读 · 2 评论 -
一篇文章讲清MySQL索引
索引,可能让好很多人望而生畏,毕竟每次面试时候 MySQL 的索引一定是必问内容,哪怕先撇开面试,就在平常的开发中,对于 SQL 的优化也而是重中之重。可以毫不夸张的说,系统中 SQL 的好坏,是能直接决定你系统的快慢的。但是在优化之前大家是否想过一个问题?那就是:我们优化的原则是什么?优化SQL的理论基础是什么?虽然说实践出真知,但是我更相信理论是支撑实践的基础,因为我们不可能毫无目的的去盲目的实践,因为这样往往事倍功半。所以说了这么多只想告诉大家,在真正的开始索引优化之前,我们需要彻底搞明白转载 2021-03-04 18:48:15 · 90 阅读 · 1 评论 -
乐观锁、悲观锁以及CAS乐观锁的实现机制原理分析
目录前言:一、数据库的锁1.1 锁机制二、悲观锁与乐观锁详解2.1 悲观锁2.2 乐观锁三、CAS详解3.1 锁存在的问题3.2 CAS3.3 Java对CAS的支持3.4 CAS会导致“ABA问题”:正文前言:在并发访问情况下,可能会出现脏读、不可重复读和幻读等读现象,为了应对这些问题,主流数据库都提供了锁机制,并引入了事务隔离级别的概念。数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并转载 2021-02-20 11:39:45 · 564 阅读 · 0 评论 -
mysql中timestamp和datetime类型的区别
一、MySQL中表示当前时间的方法:CURRENT_TIMESTAMPCURRENT_TIMESTAMP()NOW()LOCALTIMELOCALTIME()LOCALTIMESTAMPLOCALTIMESTAMP()二、关于TIMESTAMP和DATETIME的比较一个完整的日期格式如下:YYYY-MM-DD HH:MM:SS[.fraction],它可分为两部分:date部分和time部分,其中,date部分对应格式中的“YYYY-MM-DD”,time部分对应格式中的“HH:MM:原创 2021-02-14 17:03:36 · 338 阅读 · 0 评论