![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库
文章平均质量分 79
MySQL
时光清浅ぴ许你安然
这个作者很懒,什么都没留下…
展开
-
SQL关联表更新
SQL关联表更新原创 2022-08-01 20:44:02 · 2244 阅读 · 0 评论 -
mysql判断一个集合中是否存在于另一个集合
比如有以下数据(1)“张三,李四”(2)“张三,李四,王五”(3) “赵六,赵三”怎样判断(2)中存在(1)中的数据怎样判断(3)中不存在(1)中的数据增加函数DELIMITER $$CREATE FUNCTION `IS_INCLUDE` (setA longtext,setB longtext) RETURNS int(1)BEGINDECLARE idx INT DEFAULT 0 ;DECLARE len INT DEFAULT 0;DECLARE llen INT DE原创 2021-12-07 22:14:52 · 2010 阅读 · 1 评论 -
行锁分析和死锁
一、行锁通过检查InnoDB_row_lock状态变量来分析系统上的行锁的争夺情况:show status like'innodb_row_lock%';对各个状态量的说明如下:Innodb_row_lock_current_waits: 当前正在等待锁定的数量Innodb_row_lock_time: 从系统启动到现在锁定总时间长度Innodb_row_lock_time_avg: 每次等待所花平均时间Innodb_row_lock_time_max:从系统启动到现在等待最长的一次所花时间原创 2021-07-20 23:25:17 · 308 阅读 · 0 评论 -
MySQL的MVCC机制详解
MySQL底层还有几个隐藏字段,比如类似创建事务id、删除事务ididname balance 创建事务id删除事务id 1zhangsan4501013 2wangwu60011空2wangwu88860013空先查询select * from account;ps-注意:这个时候创建了查询快照,记录执行sql这一刻最大的已提交事务id(快照点已提交最大事务id)比如现在开启事务,事务id为13,①、先删除id=1的记录②、然后更新id=2的记录,③、再提交对于删除原创 2021-07-01 19:43:11 · 397 阅读 · 0 评论 -
行锁与隔离级别案例分析
更多内容,可前往深入理解MySQL锁与事务隔离级别查看现有如下表:CREATE TABLE `account` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `balance` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;一个session原创 2021-06-22 22:38:38 · 130 阅读 · 0 评论 -
深入理解MySQL锁与事务隔离级别
1、锁定义锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争用以外, 数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性 是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个 重要因素。2、锁分类从性能上分为乐观锁(用版本对比来实现)和悲观锁 乐观锁(用版本对比来实现)。比如说用数据库维护一个版本,某张表增加一个字段vers原创 2021-06-10 22:49:10 · 136 阅读 · 1 评论 -
in和exsits、count(*)查询优化
一、in和exsits1.1 原则小表驱动大表,即小的数据集驱动大的数据集1.2 in适用场景:当B表的数据集小于A表的数据集时,in优于existsselect * from A where id in (select id from B) 可以先思考下,是括号里面的SQL先执行还是外面先执行??? 绝大数情况下是括号里面的SQL先执行,也有些特殊情原创 2021-06-07 22:36:01 · 983 阅读 · 1 评论 -
临时关闭MySQL缓存
我们经常在优化SQL的时候有没有遇到过这种情况??有一条查询时间很长的SQL,第一次查询,花费的时间是正常的,再次查询,花费的时间变得少了很多,,这是怎么回事呢??这是因为MySQL是有缓存的,只要执行过就有缓存,所以再次查询的时间变得很短,我们可以暂时关闭缓存来检验SQL优化是否成功。set global query_cache_size=0; set global query_cache_type=0;重启之后将会重新开启缓存...原创 2021-06-07 22:35:24 · 531 阅读 · 0 评论 -
分页查询、JOIN关联查询优化
现有如下表:CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄', `position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位', `hire_time` tim原创 2021-06-03 23:58:03 · 1005 阅读 · 0 评论 -
Using filesort文件排序原理详解
filesort文件排序的两种方式 单路排序:是一次性取出满足条件行的所有字段,然后在sort buffer(缓存文件)中进行排序用trace工具可 以看到sort_mode信息里显示<sort_key, additional_fields>或者<sort_key, packed_additional_fields> 双路排序(又叫回表排序模原创 2021-05-27 23:35:35 · 1008 阅读 · 0 评论 -
MySQL索引优化实例-Order by 与Group by优化
Explain详细介绍,可前往MySQL Explain执行计划详解查看现有如下表:CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄', `position` varchar(20) NOT NULL DEFAU原创 2021-05-25 23:05:58 · 310 阅读 · 0 评论 -
MySQL是如何选择索引的?
现有如下表:CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄', `position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位', `hire_time` tim原创 2021-05-21 22:45:24 · 447 阅读 · 0 评论 -
索引最佳实践具体实例
SQL优化原创 2021-05-19 23:10:57 · 1100 阅读 · 1 评论 -
MySQL Explain执行计划详解
使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返 回执行计划的信息,而不是执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中比如存在以下三个表:一、简单用法+介绍explain select * from actor;在查询中的每个表会输出一原创 2021-05-14 23:06:38 · 294 阅读 · 0 评论 -
MySQL存储引擎底层常见面试题
更多内容,前往 MySQL不同存储引擎底层真正存储结构进行查看一、聚集索引、非聚集索引到底是什么东西? 实际上InnoDB的主键索引就可以认为是个聚集索引。 聚集索引具体是什么意思呢?聚集索引也叫做聚簇索引,就是索引和表的数据列聚集在一起,放在一个文件里面去存储。 实际上MyISAM的原创 2021-05-12 22:34:59 · 133 阅读 · 0 评论 -
MySQL不同存储引擎底层真正存储结构
常见的数据库存储引擎有MyISAM和InnoDB(这里指的是数据表级别的存储引擎)。由于一个库中有不同的表,而不同的表可能对应着不同的存储引擎。这里纠正一个错误的概念:可能有很多人认为,如果一个数据库使用的InnoDB存储引擎,那么这个数据库中所有的表都是InnoDB的 ,其实并不是这样的。我们在设计表的时候有个选项,选项里面是可以选择存储引擎的,里面有很多不同种类的存储引擎,也就是说一个库里面不同的表可以使用不同的存储引擎。我们都知道,数据库的表数据以及索引结构都是存在磁盘上的。默认是存储在原创 2021-05-09 22:56:48 · 329 阅读 · 0 评论 -
深入理解Mysql索引底层数据结构与算法(二)
深入理解Mysql索引底层数据结构与算法原创 2021-05-07 22:59:36 · 110 阅读 · 0 评论 -
深入理解Mysql索引底层数据结构与算法(一)
在平常开发的过程中,经常会遇到慢查询,如果要优化的话,大部分人第一反应就是加索引,看一下SQL的查询条件是不是走了合适的索引(看查询报告),比如通过Explain来查看。如果加的索引适当,即便是非常大的数据量,都会将查询的速度至少提高一两个等级索引为什么会有这么大的作用?以下来简单介绍下(以MySQL为例):一、索引本质官方概念:索引是帮助MySQL高效获取数据的排好序的数据结构可以形象的理解书的目录页1、数据结构比如数据库中存在以下数据:在表中任意找一行数据比如:select * fr原创 2021-04-19 22:25:52 · 186 阅读 · 0 评论