大厂基本功 | MySQL 三大日志 ( binlog、redo log 和 undo log ) 的作用?
前言MySQL日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中,比较重要的还要属二进制日志binlog(归档日志)和事务日志redolog(重做日志)和undolog(回滚日志)。今天就来聊聊redolog(重做日志)、binlog(归档日志)、两阶段提交、u
MySQL 分库分表及其平滑扩容方案
众所周知,数据库很容易成为应用系统的瓶颈。单机数据库的资源和处理能力有限,在高并发的分布式系统中,可采用分库分表突破单机局限。本文总结了分库分表的相关概念、全局ID的生成策略、分片策略、平滑
MySQL 性能优化梳理
前言本文主要针对的是关系型数据数据库MySql。键值类数据库可以参考:https://www.jianshu.com/p/098a870d83e4先简单梳理下Mysql的基本概念,然后分创建时和查询时这
MySQL 啥时候用表锁,啥时候用行锁?
MySQLInnodb的锁可以说是执行引擎的并发基础了,有了锁才能保证数据的一致性。众所周知,我们都知道Innodb有全局锁、表级锁、行级锁三种,但你知道什么时候会用表锁,什么时候会用行锁吗?虽然对MySQL的知识点挺熟悉的,但一开始看到这个问题,树哥也是有点懵,我还真没从这个角度
基于MySQL的SQL语句最全讲解
本文目录:一、SQL语句二、SQL约束三、SQL语句(DQL)四、多表操作五、多表关系实战六、多表查询一、SQL语句1.SQL概述SQL语句介绍数据库是不认识JAVA语言的,但是我们同样要与数据库交互,这时需要使用到数据库认识
详解MySQL执行计划EXPLAIN
1、什么是MySQL执行计划要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解。MySQL本身的功能架构分为三个部分,分别是应用层、逻辑层、物理层,不只是MySQL,其他大多数数据库
MySQL查询慢别怪索引,没准是这些原因导致的!
我熟练应用ctrlc和ctrlv开发curd代码好多年了。mysql查询为什么会慢,关于这个问题,在实际开发经常会遇到,而面试中,也是个高频题。遇到这种问题,我们一般也会想到是因为索引。那除开索引之外,还有哪些因素会导致数据库查询变慢呢?有哪些操作,可以提升mysql的查询能力呢?今天这篇文章,我们
MySQL 批量插入数据,一次插入多少行数据效率最高?
一、前言我们在操作大型数据表或者日志文件的时候经常会需要写入数据到数据库,那么最合适的方案就是数据库的批量插入。只是我们在执行批量操作的时候,一次插入多少数据才合适呢?假如需要插入的数
迷失在Mysql的锁世界
1.饮料这是一杯饮料。这是3杯饮料,每杯饮料的味道各不相同。但是人类并不称呼【饮料】为【饮料】,而是称呼【饮料】为【记录】。2.红章鱼这个红色的,长的像章鱼🐙的家伙,我们就叫它红章鱼~红章
线上MySQL的自增id用尽怎么办?
MySQL的自增id都定义了初始值,然后不断加步长。虽然自然数没有上限,但定义了表示这个数的字节长度,计算机存储就有上限。比如,无符号整型(unsignedint)是4个字节,上限就是2^32-1。那自
MySQL死锁产生原因和解决方法
Mysql锁类型一、锁类型介绍:MySQL有三种锁的级别:页级、表级、行级。表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度
MySQL中间件ProxySQL的事务测试
MySQL中间件ProxySQL的事务测试--2022-06-29春雷1、前言为了验证ProxySQL的几个autocommit参数对:setautocommit=0的方式开事务的影响,做如下测试。2、基本信息分类具体ProxySQL2.3.2版本2.3.2-10-g8cd66cf端口:5555My
MySQL中的游标
什么是游标?游标(cursor)是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。注意:MySQL游标只能用于存储过程(和函数)。创建游标在创建一个游标前,我们需要先清除游标的语法1、定义
MySQL 定时备份数据库(非常全)
在操作数据过程中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库。本篇文章主要讲述了几种方法进行MySQL定时备份数据库。一.mysqldump命令备份数据
建议自查!MySQL驱动Bug引发的事务不回滚问题,也许你正面临该风险!
关于事务不回滚的问题,我们之前有讲过多期:我来出个题:这些事务会不会回滚?大概率你会错!为什么catch了异常,但事务还是回滚了?群友:事务中的异常不也抛出了,为什么没
MySQL 索引失效的几种类型以及解决方式
索引失效的情况有哪些?索引列不独立使用了左模糊使用or查询部分字段没有使用索引字符串条件没有使用''不符合最左前缀原则的查询索引字段没有添加notnull约束隐式转换导致索引失效索引列不独立是指被索引的这列不能是表达式的一部分,不能是函数的参数
MySQL 开发规范
所有的数据库对象名称必须使用小写字母并用下划线分割(MySQL大小写敏感,名称要见名知意,最好不超过32字符)禁止在数据中存储图片,文件二进制数据(使用文件服务器)禁止在线上做数据库压力测试禁止从开发环境,测试
MySQL 的零拷贝技术
一.先需要了解Buffer与cache的区别Bbuffer与Cache非常类似,因为它们都用于存储数据数据,被应用层读取字节数据。在很多场合它们有着相同的概念[1]:首先从翻译上,Buffer应该翻译为“缓冲”,Cache应该翻译为“缓存”,两个完全不是一个东西。在硬件这一层看,Buff
都是同样条件的mysql select语句,为什么读到的内容却不一样?
假设当前数据库里有下面这张表。user表数据库原始状态老规矩,以下内容还是默认发生在innodb引擎的可重复读隔离级别下。都是select结果却不同大家可以看到,线程1,同样都是读age>=3的数据。第一次读到1条数据,这个是原始状态。这之后线程2将id=2的age字段也改成了3。线程1此时再
MySQL 开发规范
所有的数据库对象名称必须使用小写字母并用下划线分割(MySQL大小写敏感,名称要见名知意,最好不超过32字符)禁止在数据中存储图片,文件二进制数据(使用文件服务器)禁止在线上做数据库压力测试禁止从开发环境,测试