mysql
文章平均质量分 81
三3三
编码梦想,守护创新 —— 用Java编织安全的数字世界。
展开
-
InnoDB的三种行锁(提供具体sql执行案例分析)
本文详细介绍InnoDB存储引擎有3种行锁,记录锁、间隙锁、临键锁。原创 2023-06-26 11:25:36 · 1409 阅读 · 1 评论 -
mysql中的count(1)、count(*)、count(id)哪个更快?
mysql count()方法详解原创 2023-05-30 20:06:35 · 2018 阅读 · 0 评论 -
Mysql 死锁和死锁的解决方案
mysql 死锁和解决方案原创 2022-08-04 14:57:34 · 4742 阅读 · 0 评论 -
MYSQL-InnoDB的线程模型
innodb的线程模型介绍原创 2022-07-25 07:34:41 · 573 阅读 · 0 评论 -
Undo log日志详解
介绍undo log日志生命周期、作用、工作原理、存储机制以及mysql中的配置参数等等原创 2022-07-19 15:57:29 · 8817 阅读 · 0 评论 -
InnoDB的磁盘结构
关于InnoDB各种表空间的介绍原创 2022-07-19 07:46:44 · 391 阅读 · 0 评论 -
为你解密InnoDB是如何解决写失效问题
为你解密Double write如何解决InnoDB写失效问题原创 2022-07-15 07:03:23 · 680 阅读 · 0 评论 -
undolog多版本链+ReadView机制实现mvcc多版本并发控制
今天和大家分享一下MVCC的知识,了解MVCC之后,你对mysql的事务隔离理解会更深入。1.MVCC是什么?MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。它主要是用来处理mysql在多线程操作缓存数据时出现的一系列并发问题。2.前置知识点(1)什么是脏写、脏读、不可重复读、幻读?网上相关资料很多,这里不做赘述(2)四种隔离级原创 2021-12-31 20:23:24 · 2885 阅读 · 2 评论 -
关于Mysql的Buffer Pool详解(二)
今天这篇就和大家讲解一下Buffer Pool里的free链表、flush链表、LRU链表以及mysql是如何基于冷热数据分离的方案,来优化LRU算法淘汰机制的1.free链表是什么?有什么作用?在了解free链表之前我们先思考一个问题:我们都知道buffer pool会将自己的内存空间划分成多个16kb大小的数据页用来缓存数据,当读取磁盘文件的时候,会将磁盘文件里的数据写入buffer pool。那么问题来了,磁盘文件写入缓存数据到buffer pool中的数据页时,是怎么区分哪些缓存页是空闲的,哪原创 2021-12-29 23:31:30 · 925 阅读 · 1 评论 -
关于Mysql的Buffer Pool详解(一)
今天和大家分享一下Mysql中关于Buffer Pool的相关知识1.首先大家需要知道Buffer Pool是什么?有什么作用?我们都知道Mysql里的数据,最终都会落到磁盘文件上的,但是我们对数据库进行增删改操作的时候,不可能直接操作磁盘数据,因为如果对磁盘文件进行随机读写操作的话,那速度是相当慢的,不可能支撑高并发的场景。因此mysql的增删改查操作都是对内存数据进行操作的,然后再将内存数据更新到磁盘。而这个内存组件就是buffer pool。下面我们就简单介绍一下update操作,在InnoDB原创 2021-12-28 23:35:21 · 833 阅读 · 0 评论 -
sql执行流程详解
今天复习了一下sql的执行流程,在这里简单做个笔记,方便后期回忆下图为手动绘制的sql执行图,分解了sql执行的步骤具体解释:1.用户发送请求,tomcat进行处理,最终会调用msql驱动的数据库连接池,获取数据库连接,然后发送需要执行的sql。2.Mysql接收到执行sql请求,调用数据库连接池里的一个线程去监听和读取请求数据,并从网络连接中读取和解析需要执行的sql数据。3.处理线程解析出需要执行的sql数据之后,会调用sql接口,去执行sql语句。4.sql接口会调用sql解析器,基于原创 2021-12-26 16:38:57 · 1941 阅读 · 0 评论 -
如何分析sql执行效率
如何定位慢查询和如何分析 SQl 执行效率1 定位慢 SQL在开发中,经常会遇到一个接口返回数据的等待时间过长,这时候我们就需要查看是否因为慢sql导致, 定位慢 SQL 有如下两种解决方案:1.查看慢查询日志确定已经执行完的慢查询2.show processlist 查看正在执行的慢查询下面我就介绍如何使用以及两者的使用场景:1.1 通过慢查询日志定位慢查询sql,一般的方法是通过慢查询日志来查询的,MySQL 的慢查询日志一般记录在 MySQL 中响应时间超过参数 long_q原创 2021-03-08 15:53:45 · 1434 阅读 · 1 评论 -
mysql 优化
一、mysql查询优化思路1.小结果集驱动大的结果集(join操作小于百万级)针对百万数量级:放弃在mysql中的join操作,推荐分别根据索引单表获取数据,然后在程序里做join,merge数据。尽量使用nosql,如redis、memcached等来缓存热点数据从而缓解mysql压力。针对高并发的情况:io操作无非就是读io和写io,读io我们可以将热点数据存到redis,让他走逻辑io,写io可以使用消息队列,再不行就搭建redis、mq、mysql集群,这样能承受的并发量会成几何倍的增长。原创 2020-12-10 17:39:36 · 191 阅读 · 0 评论 -
mysql 存储过程
近期利用空闲时间学习了mysql的一些知识,其中涉及到了mysql的存储过程、函数和触发器的使用,写此博客,记录一下,因为函数和触发器和存储过程大同小异,这里便只记录存储过程的使用方法:存储过程右键点击函数,新建函数:这里点击过程:在这里定义一些传入变量以及变量的类型:BEGIN #Routine body goes here...declare settle_status varchar(10);CASE WHEN p_status = 'yes' THEN set settl原创 2020-12-02 15:33:44 · 149 阅读 · 0 评论 -
使用shardingjdbc实现分库分表
近期有个开发消息中心的需求,考虑到数据量大,决定采用分库分表的处理方式,这里选用shardingjdbc来实现分库分表。github源码下载地址下面是整体的架构:1 首先配置多数据源application.yml文件spring: shardingsphere: datasource: names: db0,db1 db0: databaseName: db0 type: com.alibaba.druid.pool.Druid原创 2020-06-02 17:23:40 · 1047 阅读 · 0 评论 -
用Navicat建表时enum类型的使用
在数据库表内的某个字段中,常常会出现在几个字段中选值的情况例如:字段 class 选值范围:1班、2班、3班这种情况可以用后端代码控制选值范围,同样也可以在数据库表中控制选值范围,这种情况就需要用到enum数据类型了,具体用法如下:建表时,字段类型选择enum点击这个位置在这里输入可选值,选值范围确定之后,可以设置默认值到这里就设置完成了...原创 2020-03-20 16:21:57 · 9534 阅读 · 0 评论 -
通过sql语句修改Mysql表中字段的默认值
如何修改Mysql表中的默认值场景模拟:表teacher中的age字段,默认值为NULL,现在想将默认值修改成0想要实现以上效果,需要完成两部分操作1.将原有的默认属性删掉2.重新设置该字段的默认值这样默认值就已经修改完成了...原创 2019-11-19 21:26:34 · 3559 阅读 · 0 评论 -
修改Mysql中已有字段属性
如何修改表中已有字段的属性ALTER TABLE 表名 MODIFY 字段名 修改之后字段的属性;例: ALTER TABLE teacher MODIFY student VARCHAR(20) DEFAULT NULL COMMIT ‘学生’;运行之后,你的字段就会修改成你想要的属性...原创 2019-11-19 21:01:10 · 821 阅读 · 0 评论