mysql
文章平均质量分 89
唐伯虎点蚊香dw
这个作者很懒,什么都没留下…
展开
-
SQL 语句的加锁方式
美团问数据库应该是非常多的,尤其喜欢考手写 SQL 然后问你这个 SQL 语句上面加了哪些锁,你会发现其他厂面试基本很少会这样考,所以很多小伙伴遇到这种问题的时候都是一脸懵逼,这篇文章就来详细总结下 InnoDB 存储引擎中的行锁的加锁规则,并辅以实例解释。首先众所周知,InnoDB 三种行锁:Record Lock(记录锁):锁住某一行记录Gap Lock(间隙锁):锁住一段左开右开的区间Next-key Lock(临键锁):锁住一段左开右闭的区间哪些语句上面会加行锁?转载 2023-06-26 17:55:28 · 1295 阅读 · 0 评论 -
Seata的全局锁
我们知道 Seata 的事务是一个全局事务,它包含了若干个分支本地事务,在全局事务执行过程中(全局事务还没执行完),某个本地事务提交了,如果 Seata 没有采取任务措施,则会导致已提交的本地事务被读取,造成脏读,如果数据在全局事务提交前已提交的本地事务被修改,则会造成脏写。由此可以看出,传统意义的脏读是读到了未提交的数据,Seata 脏读是读到了全局事务下未提交的数据,全局事务可能包含多个本地事务,某个本地事务提交了不代表全局事务提交了。我们分别在执行、提交的过程都做了什么。转载 2023-02-15 15:27:24 · 1254 阅读 · 0 评论 -
Mysql学习
1.MySQL的每一行都会有三个默认隐藏字段row_id, tx_id ,roll_point分别是行id,事务id,roll_point回滚指针,指向的是上一个版本的数据事务自己可以读到自己的改动,这个就是版本链2.ReadView在读已提交的隔离级别,每次查询会更新m_ids也就是活跃的事务id,如果数据的事务id是在这个里面,就去读上一个版本,这样就不会查询出没有提交的数据,第二次查询会更新这个m_ids,但是在可重复读这个级别,生成了ReadView后,第二次查询不会更新m_id..原创 2021-10-26 23:08:14 · 1079 阅读 · 0 评论 -
数据库中的悲观锁和乐观锁
悲观锁当我们要对一个数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发。这种借助数据库锁机制在修改数据之前先锁定,再修改的方式被称之为悲观并发控制(又名“悲观锁”,Pessimistic Concurrency Control,缩写“PCC”)。之所以叫做悲观锁,是因为这是一种对数据的修改抱有悲观态度的并发控制方式。我们一般认为数据被并发修改的概率比较大,所以需要在修改之前先加锁。悲观并发控制实际上是“先取锁再访问”的保守策略,为数据处理转载 2021-06-08 09:52:52 · 626 阅读 · 0 评论 -
Redis与Mysql双写一致性方案解析(转)
一 前言首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议本文由以下三个部分组成 1、讲解缓存更新策略 2、对每种策略进行缺点分析 3、针对缺点给出改进方案二 一致性方案先做一个说明,从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。这种方案下,我们可以对存入缓存的数据设置过期时转载 2021-05-27 09:54:58 · 100 阅读 · 0 评论 -
InnoDB一颗B+树能存放多少行数据
一个问题?InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page),一转载 2021-04-07 11:10:49 · 112 阅读 · 0 评论 -
高性能Mysql主从架构的复制原理及配置详解(转)
1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接...转载 2020-12-14 10:17:07 · 356 阅读 · 0 评论 -
Mysql死锁与spring事务
MySQL死锁从产品之初就偶有发生,算是萦绕在心中的噩梦之一。由于死锁大都伴随着锁等待,所以一般都会拉低服务QPS,在死锁发生时肯定会出现各种意料不到的问题。前期一直采用“指标不治本”的办法,对特别容易产生死锁的方法增加retry。但当retry和事务嵌套在一起时也会出现不可预知的错误。对于数据库死锁这个万恶之源,真可谓深恶痛绝,所以这次在解决retry和事务嵌套问题时,将这个元凶也一并解决。一些关于事务的概念为了更好的说明问题,我们先来解释一下基本概念隔离级别Tran...转载 2020-05-21 09:13:34 · 806 阅读 · 0 评论 -
Mysql是怎么实现事务的
Mysql的innodb存储引擎是通过事务来保证数据的一致性的数据库事务通常包含了一个序列的对数据库的读/写操作包含有以下两个目的为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使再异常状态下仍能保持一致性的方法当多个应用程序再并发访问数据库时,可以再这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰特性:事务的特性有原子性,隔离性,持久...转载 2020-04-15 09:11:07 · 990 阅读 · 0 评论 -
MySQL索引原理及慢查询优化
背景MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最...转载 2020-04-11 21:50:45 · 113 阅读 · 0 评论 -
Innodb中的事务隔离级别和锁的关系
前言我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。这里通过分析MySQL中InnoDB引擎的加锁机制,来抛砖引玉,让读者更好的理解,在事务处理中数据库到底做了什么。一次封锁or两段锁...转载 2020-04-11 21:48:57 · 109 阅读 · 0 评论 -
Mysql复制以及ProxySql
转载请务必在文章最开头标明原文地址本文原创地址:骏马金龙https://www.cnblogs.com/f-ck-need-u/p/7586194.html本人博客搬家:骏马金龙www.junmajinlong.com以下是本系列文章的大纲,此页博文完全原创,花费了作者本人的极大心血,如转载,请务必标明原文链接。如果觉得文章不错,还请帮忙点下"推荐",各位的支持,能激发和鼓励我更大...转载 2019-10-15 10:26:15 · 131 阅读 · 0 评论 -
写一手好SQL很有必要
MySQL性能 最大数据量 最大并发数 查询耗时0.5秒 实施原则 数据表设计 数据类型 避免空值 text类型 索引优化 索引分类 优化原则 SQL优化 分批处理 不做列运算 避免Select * 操作符<>优化 OR优化 IN优化 LIKE优化 JOIN优化 LIMIT优化 其他数据库 博主...转载 2019-10-15 10:23:34 · 92 阅读 · 0 评论 -
超级全面的Mysql优化
推荐阅读(点击即可跳转阅读) SpringBoot内容聚合 面试题内容聚合 设计模式内容聚合 Mybatis内容聚合 多线程内容聚合 本文概要概述为什么要优化系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比如何优化...转载 2019-09-12 15:41:02 · 236 阅读 · 0 评论 -
windows安装mysql
1. 配置环境变量path下增加mysql根目录的路径2. 配置mysql配置文件.默认是my-default.ini, 当然可以配置自己的. 这里我使用了默认的配置basedir和datadir注意:你会发现是没有data这个文件夹的.但是别介意,也不用自己手动建.待会可以用命令初始化.3.进入bin目录下,执行命令 mysqld --defaults...转载 2019-09-12 15:44:16 · 92 阅读 · 0 评论 -
mysql explain实例
写在前面explain对我们优化sql语句是非常有帮助的。可以通过explain+sql语句的方式分析当前sql语句。例子EXPLAIN SELECT dt,method,url FROM app_log WHERE id=11789table显示这一行数据属于哪张表,若在查询中为select起了别名,则显示别名。EXPLAIN SELECT dt,metho...转载 2019-09-18 17:31:23 · 214 阅读 · 0 评论 -
Mysql索引为什么用B+树而不用hash或者是红黑树
首先要知道什么是B+树,什么是hash,什么是红黑树; 二叉树我们都了解,一个节点的左键点小于该节点,右节点大于该节点,但是如果插入二叉树的数据是有序的,就会形成二叉树的极端情况,形成链表,我们知道树的查询复杂度跟树的高度有关,树越高,那么查询事件复杂度就越高,并且需要更多的磁盘IO,所以需要通过某种约束来保证树的平衡, 那么红黑树就是平衡二叉树中的一种,它通过一系...原创 2019-09-26 14:55:10 · 2352 阅读 · 2 评论 -
Mysql全文检索索引
前言只有Innodb和myisam存储引擎能用全文索引(innodb支持全文索引是从mysql5.6开始的) char、varchar、text类型字段能创建全文索引(fulltext index type) 全文索引的基于关键词的,如何区分不同的关键词了,就要用到分词(stopword) 英文单词用空格,逗号进行分词;中文分词不方便(一个句子不知道怎样区分不同的关键词) 内置分词解析...转载 2019-09-30 14:31:56 · 350 阅读 · 0 评论 -
Mysql Group Replication
读目录(Content)1 What's Group Replication 2 配置要求与限制 2.1 数据库要求 2.1.1 innodb引擎 2.1.3 隔离级别 2.1.4 外键 2.1.5 IPv4网络,网络性能稳定延迟小带宽充足 2.1.6 自增跟步长 2.2 安装mysql_replication引擎前提 2.3 其他参数要求 ...转载 2019-10-11 16:10:31 · 271 阅读 · 0 评论 -
mysql主从复制配置
一、如何配置MYSQL的主从复制?1. 两台数据库服务器,IP分别为 192.168.216.128 和 192.168.216.129,在服务器上装MYSQL(我的配置版本为5.5.56)2. 打开 192.168.216.128 服务器上的MYSQL的配置文件 /etc/my.cnf (路径根据自己服务器的情况来看),将其中的 server-id 设为1(默认为1,总之两台服务器要设置...转载 2019-09-12 15:38:21 · 84 阅读 · 0 评论