mysql
文章平均质量分 82
打工人很惨
这个作者很懒,什么都没留下…
展开
-
mysql数据库相关流程图/原理图
整理了一些Mysql数据库相关流程图/原理图,做一下笔记,大家一起学习。1.mysql主从复制原理图mysql主从复制原理是大厂后端的高频面试题,了解mysql主从复制原理非常有必要。主从复制原理,简言之,就三步曲,如下:主数据库有个bin-log二进制文件,纪录了所有增删改Sql语句。(binlog线程) 从数据库把主数据库的bin-log文件的sql语句复制过来。(io线程) 从数据库的relay-log重做日志文件中再执行一次这些sql语句。(Sql执行线程)如下图所示:转载 2021-11-15 17:51:35 · 997 阅读 · 0 评论 -
后端程序员必备:索引失效的十大杂症
背景最近生产爆出一条慢sql,原因是用了or和!=,导致索引失效。于是,总结了索引失效的十大杂症,希望对大家有帮助,加油。一、查询条件包含or,可能导致索引失效新建一个user表,它有一个普通索引userId,结构如下:CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userId` int(11) NOT NULL, `age` int(11) NOT NULL, `name` varchar(255转载 2021-11-15 15:21:56 · 289 阅读 · 0 评论 -
分布式事务 XA 模式
基于 XA 协议实现一个分布式事务处理框架XA 协议是由 X/Open 组织提出的分布式事务处理规范,主要定义了事务管理器 TM 和局部资源管理器 RM 之间的接口。目前主流的数据库,比如 oracle、DB2 都是支持 XA 协议的。mysql 从 5.0 版本开始,innoDB 存储引擎已经支持 XA 协议,今天的源码介绍实验环境使用的是 mysql 数据库。两阶段提交分布式事务的两阶段提交是把整个事务提交分为 prepare 和 commit 两个阶段。以电商系统为例,分布式系统中转载 2021-11-12 16:43:44 · 342 阅读 · 0 评论 -
对比7种分布式事务方案,还是偏爱阿里开源的Seata(原理+实战)
这篇文章主要介绍一些目前主流的几种分布式解决方案以及阿里开源的一站式分布式解决方案Seata。文章有点长,耐心看完,看完你还不懂分布式事务,欢迎来捶我...............文章目录如下:什么是分布式事务?分布式对应的是单体架构,互联网早起单体架构是非常流行的,好像是一个家族企业,大家在一个家里劳作,单体架构如下图:但是随着业务的复杂度提高,大家族人手不够,此时不得不招人,这样逐渐演变出了分布式服务,互相协作,每个服务负责不同的业务,架构如下图:因此需要服务与服务之转载 2021-11-12 14:57:40 · 3133 阅读 · 1 评论 -
分布式事务基础篇
前言最近看了几篇有关于分布式事务的博文,做一下笔记。哈哈~github地址github.com/whx123/Java…数据库事务数据库事务(简称:事务),是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。数据库事务的几个典型特性:原子性(Atomicity )、一致性( Consistency )、隔离性( Isolation)和持久性(Durabilily),简称就是AC.转载 2021-11-11 19:20:54 · 154 阅读 · 0 评论 -
Redis与MySQL双写一致性如何保证?
公众号:捡田螺的小男孩 github地址,感谢每一颗star谈谈一致性一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大 弱一致性:这种一致性级别约束了系统在写入成功后,不承诺立即可以读到写入的值,也不承诺多久之后数据能够达到一致,但会尽可能地保证到某个时间级别(比如秒级别)后,数据能够达到一致状态 最终一致性:最终一致性是弱一致..转载 2021-11-09 20:18:01 · 94 阅读 · 0 评论 -
攻克order by
微信公众号:捡田螺的小男孩 github地址,感谢每一颗star 如果觉得有收获,帮忙点赞,转发下哈,感谢感谢一个使用order by 的简单例子假设用一张员工表,表结构如下:CREATE TABLE `staff` (`id` BIGINT ( 11 ) AUTO_INCREMENT COMMENT '主键id',`id_card` VARCHAR ( 20 ) NOT NULL COMMENT '身份证号码',`name` VARCHAR ( 64 ) NOT NULL COM..转载 2021-11-07 09:40:50 · 113 阅读 · 0 评论 -
MySQL日志15连问
1. redo log是什么? 为什么需要redo log?redo log 是什么呢?redo log 是重做日志。 它记录了数据页上的改动。 它指事务中修改了的数据,将会备份存储。 发生数据库服务器宕机、或者脏页未写入磁盘,可以通过redo log恢复。 它是Innodb存储引擎独有的为什么需要 redo log?redo log主要用于MySQL异常重启后的一种数据恢复手段,确保了数据的一致性。 其实是为了配合MySQL的WAL机制。因为MySQL进行更新操作,为了能够快速响应转载 2021-11-05 21:48:57 · 93 阅读 · 0 评论 -
剖析MySQL黑盒——MySQL架构设计
为何称MySQL为黑盒?对于大部分的开发人员而言,编写增删查改的sql语句通过数据库连接去操作数据库,但并不关心数据库是如何监听请求和从连接中把请求数据中提取出来,往往在意表结构,sql执行效率慢就给他们建立索引,完全把MySQL当作黑盒子去使用。1. 网络连接必须使用线程来处理MySQL 使用内部线程来实现监听和读取请求。2. SQL接口:负责处理接收到的sql语句MySQL通过sql接口把我们平时编写的sql语句简单化,让我们轻松地学会和编写sql语句,但其底层实现其实.转载 2021-11-04 22:46:39 · 92 阅读 · 0 评论 -
MYSQL MVCC实现原理
MVCC(Multi Version Concurrency Control的简称),代表多版本并发控制。与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)。MVCC最大的优势:读不加锁,读写不冲突。在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加了系统的并发性能了解MVCC前,我们先学习下Mysql架构和数据库事务隔离级别MYSQL 架构MySQL从概念上可以分为四层,顶层是接入层,不同语言的客户端通过mysql的.转载 2021-11-04 22:37:05 · 96 阅读 · 0 评论 -
数据库的疑难杂症篇
一、数据库状态判断1.1、select 1 判断(主库并发阻塞无法检测–MHA(Master High Availability)的默认方案)实际上,select 1 成功返回,只能说明这个库的进程还在,并不能说明主库没问题。现在,我们来看一下这个场景。set global innodb_thread_concurrency=3;CREATE TABLE `t` (`id` int(11) NOT NULL,`c` int(11) DEFAULT NULL,PRIMARY KEY (...转载 2021-11-04 11:35:30 · 351 阅读 · 0 评论 -
MySQL 主从同步延迟的原因及解决办法
Mysql主从基本原理,主要形式以及主从同步延迟原理 (读写分离)导致主库从库数据不一致问题的及解决方案一、主从数据库的区别从数据库(Slave)是主数据库的备份,当主数据库(Master)变化时从数据库要更新,这些数据库软件可以设计更新周期。这是提高信息安全的手段。主从数据库服务器不在一个地理位置上,当发生意外时数据库可以保存。(1) 主从分工其中Master负责写操作的负载,也就是说一切写的操作都在Master上进行,而读的操作则分摊到Slave上进行。这样一来的可以大大提高读取的效转载 2021-11-03 16:08:00 · 3621 阅读 · 0 评论 -
MyISAM与InnoDB 的区别
区别:1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;3. InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件本身就是按B+Tree组织的一个索引结构),必须要有主键,通过主键索引效率很高。但是辅..转载 2021-10-29 18:29:32 · 100 阅读 · 0 评论 -
mysql 官方文档学习
MySQL :: MySQL 5.7 Reference Manual :: 8.8.2 EXPLAIN Output Format原创 2021-10-28 15:56:08 · 198 阅读 · 0 评论 -
mysql explain详解
Explain简介本文主要讲述如何通过 explain 命令获取 select 语句的执行计划,通过 explain 我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了,表之间的引用,每张表有多少行被优化器查询等信息。下面是使用 explain 的例子:在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果 from 中包含子查询,仍会执行该子查询,将结果放转载 2021-10-28 15:54:39 · 171 阅读 · 0 评论 -
mysql 优化解决方案
解决:Using where; Using join buffer (Block Nested Loop)问题:left join 时候触发了全表查询导致很慢解决:Using where; Using join buffer (Block Nested Loop)总结:其实就是把left join 改为join就能解决这个问题转载于:https://www.cnblogs.com/learningPHP-students2018/p/10628313.html...原创 2021-10-28 15:07:14 · 239 阅读 · 0 评论 -
MySQL 排序优化
文章涉及到的 customer 表来源于案例库 sakila,下载地址为http://downloads.mysql.com/docs/sakila-db.zip,另外文章演示的 Demo 基于 MySQL Community Server8.0.19版本。2|0MySQL 排序方式基本可以分为两种 运用索引天然排序的特征直接返回排好序的数据 通过对返回数据进行排序,即 FileSort 排序 所有不是通过索引直接返回排序结果的排序都叫 FileSort 排序。FileSort...转载 2021-10-28 14:49:46 · 394 阅读 · 0 评论 -
Mysql为什么要使用索引
MySQL 官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构。快速到底 影响数据库效率的原因千千万万,使用索引是为了解决哪方面的数据库的瓶颈?点一 MySQL 数据库存储数据最终是以文件的形式存储到硬盘的。一般来说,我们在程序中使用的时候肯定要把磁盘文件中的数据读到内存中。那么就这个 “读” 的过程是什么样子的呢?磁盘读取数据靠的是机械运动,每次读取数据花费的时间可以分为寻道时间、旋转延迟、传输时间三个部分,寻道时间指的是磁臂移动到指定磁道所需要的时间,主流转载 2021-10-28 14:48:21 · 765 阅读 · 0 评论 -
mariadb与mysql
MySQL数据库介绍MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。MySQL的历史最早可以追溯到1979年,那时Oracle也才刚刚开始,微软的SQL Server影子都没有。在2008年1月16号 MySQL被Sun公司收购。2009年,SUN又被Oracle收购体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,使得许多企业选择了MySQL作为数据库MySQL官网介绍主页https转载 2021-10-10 22:41:32 · 1411 阅读 · 0 评论 -
MySQL安全更新之safe_updates介绍说明
对于研发而言,线上数据库update和delete是非常频繁的,因而经常出现update和delete时,后面忘记添加where条件的限制,导致整个表误删除,或者是误更新,造成很多灾难是非常常见的事情,如何彻底解决这样的人为的数据库故障或者减少这种人为的故障了,那就是从根本上控制好mysql数据库的权限,禁止给研发人员update和delete数据库的权限,严格SQL语句上线之前的审核,减少人为的操作mysql库的故障。然而这种数据库的权限的把控往往是很难严格意义上把控好的。只能是减少类似这样的故障的发生。转载 2021-01-30 14:27:04 · 2399 阅读 · 0 评论