数据库
文章平均质量分 82
yygr
这个作者很懒,什么都没留下…
展开
-
MySQL之索引数据结构分析
索引是一种数据结构,可以帮助我们快速的进行数据的查找索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash 索引B+ 树索引等,而我们经常使用的InnoDBB+ 树索引通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。可以大大加快数据的检索速度,这也是创建索引的最主要的原因。帮助服务器避免排序和临时表。将随机IO变为顺序IO。可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义查看全部数据库引擎。转载 2024-09-03 14:32:27 · 12 阅读 · 0 评论 -
MySQL数据库备份的4种方式
备份方法备份速度恢复速度便捷性功能一般用于cp快快一般、灵活性低很弱少量数据备份mysqldump慢慢一般、可无视存储引擎的差异一般中小型数据量的备份lvm2快照快快一般、支持几乎热备、速度快一般中小型数据量的备份xtrabackup较快较快实现innodb热备、对存储引擎有要求强大较大规模的备份其实我们还可以通过进行备份。转载 2024-06-24 15:15:04 · 318 阅读 · 0 评论 -
MySQL锁机制详细解释
基于InnoDB对事物的支持以及MVCC多版本并发的实现,InnoDB可以选择mysqldump工具加 –single-transaction参数,在不阻塞写操作的同时做全库的逻辑备份。默认情况下写锁比读锁具有更高的优先级,即使读请求先到等待队列,写锁也会插入到读锁之前,优先执行写操作,但MyISAM也支持依据生产环境通过修改参数的设置改变读写的优先级。先取锁再访问的策略,为数据的安全提供了保证,但是加锁会产生额外的开销,增加死锁的机会,只读型事物不会产生冲突也不需要加锁。转载 2024-06-20 10:06:33 · 37 阅读 · 0 评论 -
MySQL数据库——锁-表级锁(表锁、元数据锁、意向锁)
表级锁,每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在MyISAM、InnoDB、BDB等存储引擎中。表锁元数据锁(meta data lock,MDL)意向锁meta datalock, 元数据锁,简写MDL。MDL加锁过程是系统自动控制,无需显式使用,在访问一张表的时候会自动加上。MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务的时候,不可以对元数据进行写入操作。为了避免DML与DDL冲突,保证读写的正确性。转载 2024-06-17 09:51:32 · 60 阅读 · 0 评论 -
MySQL中 LBCC 和 MVCC 的理解,常见问题及示例
事务:事务是指逻辑上的一组sql操作,要么全部执行成功,要么全部执行失败。其是为了保证数据库中数据的完整性和一致性。ACID。A 原子性:通过 “undo log” 实现C 一致性:通过 “其他3个特性” 实现I 隔离性: 通过 “lock锁 + MVCC” 实现D 持久性:通过 “redo log” 实现MVCC 基础:概念:通过 “readview版本视图 + undo log” 来控制并发事务访问同一条记录时的行为。好处:提高数据库并发性能。用更好的方式去处理。转载 2024-06-13 15:01:06 · 51 阅读 · 0 评论 -
mysql日志bin log、redo log、undo log区别
在MySQL的InnoDB存储引擎中,redo log是固定大小的,采用循环写入的方式,可以保证在系统宕机的情况下,最近的一段时间内的修改都不会丢失。redo log 的设计目标是支持innodb的“事务”的特性,事务ACID特性分别是原子性、一致性、隔离性、持久性, 一致性是事务的最终追求的目标,隔离性、原子性、持久性是达成一致性目标的手段,根据的文章我们已经知道隔离性是通过锁机制来实现的。而redo log主要用于物理恢复,记录的是InnoDB存储引擎的物理操作,以确保数据的一致性和持久性。转载 2024-06-12 17:05:53 · 48 阅读 · 0 评论 -
MySQL MVCC&LBCC
而在我这个事务之后新增的数据,我是查不到的。第一种,既然要保证前后两次读取数据一致,那么我读取数据的时候,锁定我要操作的数据,不允许其他的事务修改就行了。如果仅仅是基于锁来实现事务隔离,一个事务读取的时候不允许其他时候修改,那 就意味着不支持并发的读写操作,而我们的大多数应用都是读多写少的,这样会极大地 影响操作数据的效率。当我们使用了范围查询,不仅仅命中了Record记录,还包含了Gap间隙,在这种情况下我们使用的就是临键锁,它是MySQL里面默认的行锁算法,相当于记录锁加上间隙锁。转载 2024-06-12 15:17:31 · 23 阅读 · 0 评论 -
MySQL中 LBCC 和 MVCC 的理解,常见问题及示例:
事务:事务是指逻辑上的一组sql操作,要么全部执行成功,要么全部执行失败。其是为了保证数据库中数据的完整性和一致性。ACID。A 原子性:通过 “undo log” 实现C 一致性:通过 “其他3个特性” 实现I 隔离性: 通过 “lock锁 + MVCC” 实现D 持久性:通过 “redo log” 实现MVCC 基础:概念:通过 “readview版本视图 + undo log” 来控制并发事务访问同一条记录时的行为。好处:提高数据库并发性能。用更好的方式去处理。转载 2024-06-12 09:55:15 · 93 阅读 · 0 评论 -
MySQL 事务原理
而RR隔离级别时,事务中的一致性读的ReadView是以第一条select语句的运行时,作为本事务的一致性读snapshot的建立时间点的。持久性,是通过redo log和double write buffer (双写缓冲)来实现的,我们操作数据的时候,会先写到内存的buffer pool里面,同时记录redolog,如果在刷盘之前出现异常,在重启后就可以读取redo log的内容,写入到磁盘,保证数据的持久性。InnoDB支持的四个隔离级别和SQL92定义的完全一致,隔离级别越高,事务的并 发度就越低。转载 2024-06-12 09:52:54 · 31 阅读 · 0 评论 -
最新版MySQL 8.0 的下载与安装(详细教程)
https://blog.csdn.net/The_girl_wait_me/article/details/124609881本篇文章基于WIN10系统下载与安装MySQL 8.0版本,如果需要在Linux系统下安装MySQL,详见文章:http://t.csdn.cn/deXbmMySQL官网:MySQLMySQL 8.0下载地址:MySQL :: Download MySQL Community Server可以看到MySQL最新版本为8.0.29,下面提供了压缩版本,直接解压配置就可以使用,如果转载 2022-11-29 17:04:39 · 4052 阅读 · 0 评论 -
什么是ACID?它的特性是什么?
一个完美的事务隔离,在每个事务看来,整个系统只有自己在工作,对于整个系统而言这些并发的事务一个接一个的执行,也仿佛只有一个事务,这样的隔离成为“可序列化(Serializability)”。当然,这样的隔离级别会带来巨大的开销,因此出现了各种各样的隔离级别,进而满足不同场景的需要。客户端可能会读到过期的数据,等等。原子性实际描述的是同一个客户端对于多个操作之间的限制,这里的原子表示的是不可分割,原子性的效果是,假设有操作集合{A,B,C,D,E},执行后的结果应该和单个客户端执行一个操作的效果相同。转载 2022-09-16 09:37:11 · 8160 阅读 · 0 评论 -
方便记忆理解的最左匹配原则
可以看到a的值是有顺序的,1,1,2,2,3,3,而b的值是没有顺序的1,2,1,4,1,2。再比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,因为c字段是一个范围查询,它之后的字段会停止匹配。例如a = 1 and b = 2 a,b字段都可以使用索引,因为在a值确定的情况下b是相对有序的,而a>1and b=2,a字段可以匹配上索引,但b值不可以,因为a的值是一个范围,在这个范围中b是无序的。...转载 2022-08-09 14:48:27 · 938 阅读 · 0 评论 -
菜鸟积分系统稳定性建设 - 分库分表&百亿级数据迁移
https://baijiahao.baidu.com/s?id=1711398612204958365&wfr=spider&for=pc拆库&数据迁移说白了,考验的不是一个人的技术功底,而是一个人干活的细致程度,以及抗压能力。无论在哪个公司,数据库迁移的机会都不会太多,因此,我也是非常珍惜这次历练,用阿里的一句老话来说就是 “因人成事,借事修人”。写这篇文章的目的主要是自己进行一个总结,也希望能给需要的同学们一些参考。在星爷的《大话西游》中有一句非常出名的台词:“曾经有一份真挚的感情摆在我的面前我没有珍转载 2022-06-06 21:31:26 · 263 阅读 · 0 评论 -
解决死锁之路 - 了解常见的锁类型
https://www.aneasystone.com/archives/2017/11/solving-dead-locks-two.html在上一篇博客中,我们学习了事务以及事务并发时可能遇到的问题,并介绍了四种不同的隔离级别来解决这些并发问题,在隔离级别的实现一节中,我们提到了锁的概念,锁是实现事务并发的关键。其实,锁的概念不仅仅出现在数据库中,在大多数的编程语言中也存在,譬如 Java 中的 synchronized,C# 中的 lock 等,所以对于开发同学来说应该是不陌生的。但是数据库中转载 2022-05-24 15:56:48 · 912 阅读 · 0 评论 -
mysql查询死锁表 Unknown table ‘INNODB_LOCKS‘ in information_schema
https://blog.csdn.net/zhougubei/article/details/121329428?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4-121329428-blog-81865690.pc_relevant_default&depth_1-utm_source=distribute.pc_rele转载 2022-05-24 15:26:11 · 1518 阅读 · 0 评论 -
解决死锁之路 - 学习事务与隔离级别
https://www.aneasystone.com/archives/2017/10/solving-dead-locks-one.html上个月在查看线上错误日志的时候,偶然发现了下面这样的异常,异常发生的次数并不是很多,但是可以看出几乎每天都有那么几次。看异常信息就知道是发生了数据库死锁,由于对这块不是很了解,加上这个异常对系统业务没有啥大的影响,所以就一直拖了一个月的时间。最近实在忍不住,于是花了两周的时间,从网上找到了各种关于数据库死锁相关的文章,将 MySQL 数据库的一些基础知识,包转载 2022-05-24 13:09:00 · 665 阅读 · 0 评论 -
spring-data-jpa原理探秘(1)-运行环境创建及加载Repository接口
https://blog.csdn.net/gaolu/article/details/53415420?spm=1001.2014.3001.5502spring-data-jpa的优点很多,比如继承Repository接口,在注解中书写JPQL语句即可访问数据库;支持方法名解析方式访问数据库;使用Predicate支持动态查询等,在此不一一列举了。这些都是使用spring-data-jpa中的种种优点,要想将之使用的更好更优雅,就要从spring-data-jpa的加载和运行机制进行探秘。此文转载 2022-05-10 10:18:41 · 409 阅读 · 0 评论 -
Docker环境搭建keepalived+mysql主从复制高可用
http://www.manongjc.com/detail/10-rdpsopiaturdxdu.html#docker-composeDocker环境搭建keepalived+mysql主从复制高可用mysql docker keepalived 高可用概述 切换原理和过程 docker-compose配置Mysql主从高可用 切换脚本说明 文件详情概述 目的 为解决Mysql数据库单点问题,实现两台MySQL数据库互为主备,双向replication。当一Mast转载 2022-05-09 21:06:14 · 1443 阅读 · 6 评论 -
Mysql主从跳过复制错误
https://blog.csdn.net/weixin_42018518/article/details/109004300目录1、哪些复制错误可以跳过2、跳过复制错误① 基于 GTID 模式② 传统模式③ 修改配置文件1、哪些复制错误可以跳过MySQL 因为 binlog 机制问题,有些时候会出现从库重放 SQL 执行失败的情况,特别是老的 statement 模式最容易出现这种情况(因为函数和存储过程的原因),这也是为什么强调使用 mixed 和 row 模式的原因转载 2022-05-09 11:55:28 · 1206 阅读 · 0 评论 -
Mysql GTID模式下跳过错误
https://www.jianshu.com/p/2aed9584c80cGTID(全局事务标示符) 最初由google实现,在MySQL 5.6中引入。GTID在事务提交时生成,由UUID和事务ID组成。UUID会在第一次启动MySQL时生成,保存在数据目录下的auto.cnf文件里,事务id则从1开始自增。使用GTID的好处主要有两点:不再需要指定传统复制中的 master_log_files和master_log_pos,使主从复制更简单可靠可以实现基于库的多线程复制,减小主从复制的延转载 2022-05-09 11:51:52 · 1397 阅读 · 0 评论 -
Spring Boot Jpa使用Sharding Jdbc实现分布式事务-两阶段提交-XA
1. 引入Maven依赖Spring Boot用的2.3.0.RELEASE版本<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId> <version>5.0.0-alpha</version>&原创 2022-05-04 21:30:02 · 1191 阅读 · 0 评论 -
MySQL的binlog数据如何查看
http://blog.chinaunix.net/uid-16844903-id-3896711.htmlbinlog介绍 登录到mysql查看binlog 用mysqlbinlog工具查看 本地查看 远程查看 binlog介绍binlog,即二进制日志,它记录了数据库上的所有改变. 改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕. binlog格式 基于语句,无法保证所有语句都在从库执行成功,比如update ...转载 2022-05-04 20:34:36 · 2100 阅读 · 0 评论 -
mysql中set autocommit=0与start transaction区别
https://www.cnblogs.com/langtianya/p/4777662.htmlhttps://www.cnblogs.com/kenshinobiy/p/9584110.html结论:setautocommit=0指事务非自动提交,自此句执行以后,每个SQL语句或者语句块所在的事务都需要显示"commit"才能提交事务。1、当autocommit 为 0处于手动提交模式,只有当commit数据才会生效,ROLLBACK后就会回滚。2、如果autoco.转载 2022-05-04 14:18:52 · 1487 阅读 · 0 评论 -
MySql 中的setAutoCommit方法
https://blog.csdn.net/qiumuxia0921/article/details/50583250引言setAutoCommit方法用一句话说就是用来保持事务完整性,一个系统的更新操作可能涉及多张表,这个时候,就需要用多个Sql语句来实现,实际上我觉得这个东西就是用来实现事务的。当我们进行多条数据进行增删改的时候,一旦在一句sql中出现了错误,就会出现有部分数据已经成功,而后面的数据就没有办法执行,这个时候,就会出现脏数据。因此我们使用setA...转载 2022-05-04 13:58:21 · 3241 阅读 · 0 评论 -
ShardingSphere应用专题--4.1.1版本--Sharding-JDBC 字段加密之已上线业务加密(十)
https://blog.csdn.net/qq_31457665/article/details/115325042前言1.基础的环境介绍请移步ShardingSphere应用专题–4.1.1版本–sharding jdbc环境搭建(四)你可以同时打开两个页面,避免因查找原始配置上下翻动。2.ShardingSphere官方文档更新不及时,很容易踩坑。贴出的4.x版本文档实际是4.0.1版本的,如果你准备使用该版本可以参考官方文档。本文使用的是此时最新的正式版本4.1.1版本,配置与官方转载 2022-05-02 17:04:58 · 903 阅读 · 0 评论 -
高可用的实现(Keepalived + 虚 IP)
https://www.cnblogs.com/schaepher/p/12842624.html为了避免服务单点,也为了负载均衡,我们会加一层 Nginx 层。这个 Nginx 层要有多于一台机器,不然它自身也成为一个单点。最初加 Nginx 层会变成这样: schaepher.com + | +-------+转载 2022-04-29 10:02:50 · 1065 阅读 · 0 评论 -
MySQL双主架构,原来能这么玩
https://www.cnblogs.com/ludongguoa/p/15338461.html经常有朋友问,MySQL双主的一致性问题,今天简单聊一聊。MySQL为什么要使用双主架构?MySQL最常见的集群架构,是一主多从,主从同步,读写分离的架构。通过这种方式,能够扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。为了保证MySQL写库的高可用,可以在一个MySQL数据库集群中可以设置两个主库,并设置双向同步,以冗余写库的方式,来保证写库的高可用。MyS转载 2022-04-29 10:02:59 · 621 阅读 · 0 评论 -
MySQL双主模式下是如何避免数据回环冲突的
https://jeanron100.blog.csdn.net/article/details/103060533?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7转载 2022-04-28 11:17:51 · 508 阅读 · 0 评论 -
Mysql 备份的三种方式
https://blog.csdn.net/u014209205/article/details/117957402目录一、备份的目的二、备份需要考虑的问题三、备份的类型四、备份的对象五、备份和恢复的实现1、利用select into outfile实现数据的备份与还原2、利用mysqldump工具对数据进行备份和还原3、利用lvm快照实现几乎热备的数据备份与恢复4、基于Xtrabackup做备份恢复备份的本质就是将数据集另存一个副本,但是原数据会不停的发转载 2022-04-28 10:29:04 · 11238 阅读 · 0 评论 -
MySQL GTID主备切换协议
https://mp.weixin.qq.com/s?__biz=MzU4ODM1NjY5NQ==&mid=2247486257&idx=1&sn=1a4306735f2ad6b69119d96ba489f742&chksm=fddf4609caa8cf1f582b4687530f3adb940311e49f1541d7bf02821090ed89178d48cc725ba6&token=2057345532&lang=zh_CN#rd一主.转载 2022-04-28 10:14:53 · 310 阅读 · 0 评论 -
mysql log-slave-update_mysql数据库log-slave-updates 参数解释
https://blog.csdn.net/weixin_33623134/article/details/113592675Mysql数据库log-slave-updates参数解释本文需要验证的疑问:从库做为其他从库的主库时 log-slave-updates参数是必须要添加的,因为从库要作为其他从库的主库,必须添加该参数。该参数就是为了让从库从主库复制数据时可以写入到binlog日志,为什么要用这个参数写binlog日志呢,不是在配置文件中开启log-bin = /data/33.转载 2022-04-28 09:49:36 · 1918 阅读 · 0 评论 -
RESET MASTER和RESET SLAVE使用场景和说明
https://blog.csdn.net/yabingshi_tech/article/details/50736735【前言】在配置主从的时候经常会用到这两个语句,刚开始的时候还不清楚这两个语句的使用特性和使用场景。经过测试整理了以下文档,希望能对大家有所帮助;【一】RESETMASTER参数功能说明:删除所有的binglog日志文件,并将日志索引文件清空,重新开始所有新的日志文件。用于第一次进行搭建主从库时,进行主库binlog初始化工作;注意reset master ..转载 2022-04-28 09:44:17 · 2083 阅读 · 0 评论 -
GTID 模式 优缺点以及使用注意
https://shuen.blog.csdn.net/article/details/108712516?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edef转载 2022-04-28 10:47:12 · 4099 阅读 · 2 评论 -
ShardingSphere介绍与使用
https://blog.csdn.net/qq_43843037/article/details/112741161ShardingSphere的基本介绍1、什么是shardingSphereApache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款相互独立,却又能够混合部署配合使用的产品组成。 它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言转载 2022-04-28 09:23:00 · 1051 阅读 · 0 评论 -
浅析MySQL并行复制
https://www.jb51.net/article/199142.htm01 并行复制的概念 在MySQL的主从复制架构中,主库上经常会并发的执行很多SQL,只要这些SQL没有产生锁等待,那么同一时间并发好几个SQL线程是没有问题的。 我们知道,MySQL的从库是要通过IO_thread去拉取主库上的binlog的,然后存入本地,落盘成relay-log,通过sql_thread来应用这些relay-log。 在MySQL5.6之前的版本中,当主库上有多个线程并发执行S...转载 2022-04-27 11:15:24 · 163 阅读 · 0 评论 -
MySQL集群搭建(2)-主主从模式
https://segmentfault.com/a/1190000017050180让我们继续 MySQL 集群搭建之旅,大部分 MySQL 的集群都是采用主主从的经典模式,这也是部署高可用集群的基础。从上文我们已经知道如果搭建 MySQL 的主备模式,如果没看过的可以了解一下。MySQL 安装(二进制版) MySQL集群搭建(1)-主备搭建1 环境准备上次我们搭建了主备架构,如下所示这次我们的搭建目标是具体配置信息IP 系统 端口 MySQL版本转载 2022-04-27 10:33:41 · 861 阅读 · 0 评论 -
浅析MySQL并行复制
https://www.jb51.net/article/199142.htm01 并行复制的概念 在MySQL的主从复制架构中,主库上经常会并发的执行很多SQL,只要这些SQL没有产生锁等待,那么同一时间并发好几个SQL线程是没有问题的。 我们知道,MySQL的从库是要通过IO_thread去拉取主库上的binlog的,然后存入本地,落盘成relay-log,通过sql_thread来应用这些relay-log。 在MySQL5.6之前的版本中,当主库上有多个线程并发执行S...转载 2022-04-27 08:13:34 · 1958 阅读 · 0 评论 -
MySQL 主从同步延迟的原因及解决办法
https://www.jianshu.com/p/634c661227d4Mysql主从的基本原理,主要形式以及主从同步延迟原理(读写分离),导致主库从库数据不一致的问题及解决方案。一、主从数据库的区别(1)主从分工其中Master负责写操作负载,一切写的操作都在Master上执行,读的操作分摊到Slave上进行。在一般互联网应用中,经过数据分析调查得着:读写比例是10:1左右。在写的操作上会触发大量的行锁、表锁、块锁,都是降低系统执行效率的事情,所以采用读写分离,把写操作都集中到一个转载 2022-04-27 08:13:41 · 4484 阅读 · 0 评论 -
一招教你解决mysql的主从复制延迟问题
https://baijiahao.baidu.com/s?id=1716187911729308342&wfr=spider&for=pc双主双从的mysql集群搭建,在单机应用的时候看起来没有问题,但是在企业的生产环境中,在很多情况下都会有复制延迟的问题。主从复制的原理我们在此处就不再赘述了,这是一个老生常谈的问题,原理性质的也几乎在面试中问烂了,这些原理性质的东西并不是很难,但是你需要注意了,主从复制的延迟问题会成为一个难点,能非常全面的考验同学们的技术实力。.转载 2022-04-27 08:13:48 · 999 阅读 · 0 评论 -
设置mysql从数据库只读_如何设置mysql数据库为只读
https://blog.csdn.net/weixin_29638241/article/details/113712049直奔主题,mysql设置为只读后,无法增删改。设置命令:mysql>set global read_only=1; #1是只读,0是读写mysql> show global variables like "%read_only%";以下是相关说明:1、对于数据库读写状态,主要靠 “read_only”全局参数来设定;2、默认情况下..转载 2022-04-27 09:14:06 · 5329 阅读 · 2 评论