
【MySQL】
文章平均质量分 79
MySQL
zero__007
这个作者很懒,什么都没留下…
展开
-
MySQL 的 MRR
转载自:https://www.toutiao.com/a6799062060249383428/?log_from=8898703b88451_1633014963116MySQL 里有个东西叫 MRR,全称「Multi-Range Read Optimization」。简单说,MRR 通过:把「随机磁盘读」,转化为「顺序磁盘读」从而:提高了磁盘读取的性能至于:为什么要把随机读转化为顺序读?怎么转化的?为什么顺序读就能提升读取性能?咱们开始吧。磁盘:苦逼的底层劳动人民执转载 2021-09-30 23:17:06 · 377 阅读 · 0 评论 -
mysql日志redo log、undo log、binlog
转载自:https://www.toutiao.com/a6845545335599661579/?log_from=b4450f87a3ecd_1635169016770什么是事务日志?事务要保证ACID的完整性必须依靠事务日志做跟踪,每一个操作在真正写入数据数据库之前,先写入到日志文件中如要删除一行数据会先在日志文件中将此行标记为删除,但是数据库中的数据文件并没有发生变化。只有在(包含多个sql语句)整个事务提交后,再把整个事务中的sql语句批量同步到磁盘上的数据库文件。在事务引擎上的每一次写操作都转载 2021-10-25 21:41:47 · 185 阅读 · 0 评论 -
通过SQL分析数据库加锁
转载自:https://blog.csdn.net/fedorafrog/article/details/104249140。转载 2024-02-05 22:00:00 · 164 阅读 · 0 评论 -
UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
**PROPAGATION_REQUIRES_NEW**:原有事务A新起事务B,事务B中的commit和rollback不会影响外部事务A的commit和rollback,相互独立,如果事务B抛出异常,肯定会影响外事务A的。转载 2022-10-19 22:45:00 · 2501 阅读 · 0 评论 -
一次彻底解决因数据库全表扫描引发系统卡顿问题的实践
思路比解决方案更重要。转载 2024-01-30 21:15:00 · 219 阅读 · 0 评论 -
记一次线上数据库死锁定位
有些批量操作可以利用multiquery更新数据库,但有些不可,例如对于同一张表不同字段的多行更新。批量更新,并且每个dao可以多线程更新(在不同事务内同时请求更新),而且没有按照一定顺序。例如事务1更新id为1,2,3的数据,事务2更新id为3,2,1的数据,这样就会发生死锁。转载自:https://zhanghaoxin.blog.csdn.net/article/details/78255670。按顺序更新,例如把入参改为TreeSet,并且dao对象实现Comparable接口。转载 2023-08-05 13:15:00 · 169 阅读 · 0 评论 -
InnoDB的MVCC原理
MVCC (Multi-Version Concurrency Control) 是一种基于多版本的并发控制协议,只有在InnoDB引擎下存在。MVCC是为了实现事务的隔离性,通过版本号,避免同一数据在不同事务间的竞争,可以把它当成基于多版本号的一种乐观锁。当然,这种乐观锁只在事务级别未提交锁和已提交锁时才会生效。MVCC最大的好处,读不加锁,读写不冲突。在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加了系统的并发性能。转载 2024-02-01 22:00:00 · 147 阅读 · 0 评论 -
MyBatis SQL是如何执行的?
转载自:https://blog.csdn.net/qq_36894974/article/details/104132876MyBatis 整体架构MyBatis 最上面是接口层,接口层就是开发人员在 Mapper 或者是 Dao 接口中的接口定义,是查询、新增、更新还是删除操作;中间层是数据处理层,主要是配置 Mapper -> XML 层级之间的参数映射,SQL 解析,SQL 执行,结果映射的过程。上述两种流程都由基础支持层来提供功能支撑,基础支持层包括连接管理,事务管理,配置加载,缓存处理转载 2021-04-22 10:23:59 · 252 阅读 · 0 评论 -
聚簇索引与非聚族索引
InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用"where id = 14"这样的条件查找主键,则按照B+树的检索算法即可查找到对应的叶节点,之后获得行数据。若对Name列进行条件搜索,则需要两个步骤:第一步在辅助索引B+树中检索Name,到达其叶子节点获取对应的主键。第二步使用主键在主索引B+树种再执行一次B+树检索操作,最终到达叶子节点即可获取整行数据。(重点在于通过其他键需要建立辅助索引)MyISM使用的是非聚簇索引,非聚簇索引的两棵B+树看上去没什么不转载 2021-01-31 18:35:06 · 211 阅读 · 0 评论 -
后端程序员书写高质量SQL的建议
1、查询SQL尽量不要使用select *,而是select具体字段。理由:只取需要的字段,节省资源、减少网络开销;2、如果知道查询结果只有一条或者只要最大/最小一条记录,建议用limit 1。理由:加上limit 1后,只要找到了对应的一条记录,就不会继续向下扫描了,效率将会大大提高;当然,如果查询列是唯一索引的话,是不必要加上limit 1了,因为limit的存在主要就是为了防止全表扫描,从而提高性能,如果一个语句本身可以预知不用全表扫描,有没有limit ,性能的差别并不大。3、转载 2020-12-31 17:55:15 · 194 阅读 · 0 评论 -
mybatis中使用xml写sql小技巧
转载自:https://blog.csdn.net/tengxing007/article/details/548648971. if 语句处理<select id="dynamicIfTest" parameterType="Blog" resultType="Blog"> select * from t_blog where 1 = 1 <if test="title != null"> and title = #{ti转载 2020-09-19 18:02:55 · 2951 阅读 · 1 评论 -
深入理解了MySQL
转载自:https://zhuanlan.zhihu.com/p/66352669先抛出几个问题1.为什么不建议使用订单号作为主键?2.为什么要在需要排序的字段上加索引?3.for update 的记录不存在会导致锁住全表?4.redolog 和 binlog 有什么区别?5.MySQL 如何回滚一条 sql ?6.char(50) 和 varchar(50) 效果是一样的么?索引知识回顾对于 MySQL 数据库而言,数据是存储在文件里的,而为了能够快速定位到某张表里的某条记录进行查询转载 2020-08-29 22:42:34 · 372 阅读 · 1 评论 -
MySQL中varchar与char区别
转载自:https://www.cnblogs.com/ttxcs/p/11614473.html 一. varchar存储规则 4.0版本以下,varchar(20),指的是20字节,如果存放UTF-8汉字时,只能存6个(每个汉字3字节) ; 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF-8汉字(每个汉字3字节),都可以存放20个字符 Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同。 二. varchar和转载 2020-08-17 14:30:30 · 556 阅读 · 0 评论 -
MySQL 用 limit 为什么会影响性能?
转载自:https://blog.csdn.net/u013256816/article/details/103342250 数据库表结构:mysql> desc test;+--------+---------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------+-----转载 2020-05-24 20:00:42 · 1559 阅读 · 0 评论 -
数据库分库分表
转载自:https://blog.csdn.net/xlgen157387/article/details/53976153 一、 MySQL扩展具体的实现方式 随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。 关于数据库的扩展主要包括:业务拆分、主从复制,数据库分库与分表。这篇文章主要讲述数据库分库与分表。(1)业务拆分 业务...转载 2019-05-14 20:22:40 · 159 阅读 · 0 评论 -
MyISAM与InnoDB区别
转载自:https://blog.csdn.net/KingCat666/article/details/78290468一、Innodb和MyISAMInnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比Inno...转载 2019-04-01 21:16:30 · 176 阅读 · 0 评论 -
Mysql优化执行语句
转载自:https://blog.csdn.net/gongpulin/article/details/52017214 选取最适用的字段类型 一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VAR...转载 2019-04-20 17:18:08 · 196 阅读 · 0 评论 -
Mysql索引
转载自:https://blog.csdn.net/elricboa/article/details/78650281 https://blog.csdn.net/broadview2006/article/details/78060821 https://blog.csdn.net/liangkaiping0525/article/details/82284236索引的优缺点...转载 2019-03-11 20:42:21 · 177 阅读 · 0 评论 -
MySQL优化相关的10项配置
转载自:https://blog.csdn.net/magerguo/article/details/239139811、innodb_buffer_pool_size 这是安装完InnoDB后第一个应该设置的选项。缓冲池是数据和索引缓存的地方,这个值越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘。典型的值是5-6GB(8GB内存),20-25GB(32GB内存),100...转载 2018-05-25 23:25:17 · 310 阅读 · 0 评论 -
查看MySQL每个表占用的空间
转载自:http://www.oschina.net/question/12_3673查询MySQL数据库中每个表占用的空间、表记录的行数的话,可以打开MySQL的 information_schema 数据库。在该库中有一个 TABLES 表,这个表主要字段分别是: TABLE_SCHEMA : 数据库名 TABLE_NAME:表名 ENGINE:所使用的存储引擎...转载 2016-04-25 20:21:13 · 3910 阅读 · 0 评论 -
MySQL权限管理
查看用户mysql> select host,user,password from mysql.user;创建用户mysql> create user z_root IDENTIFIED by '123456';修改用户mysql> rename user z_root to x_root;更改密码mysql> set password for z_roo...原创 2015-09-29 21:18:53 · 380 阅读 · 0 评论 -
数据库事务隔离级别
隔离级别指定当前事务执行时所不允许的交互作用类型, 即事务间是否相互隔离,或它们是否可以读取或更新被另一事务所使用的信息。 先了解事务并发控制:第一类丢失更新(Update Lost):此种更新丢失是因为回滚的原因,所以也叫回滚丢失。此时两个事务同时更新count,两个事务都读取到100,事务一更新成功并提交,count=100+1=101,事务二出于某种原因更新失败了,然后回滚,...转载 2019-06-19 20:20:31 · 108 阅读 · 0 评论 -
Mysql慢查询日志
转载自:https://blog.csdn.net/m_nanle_xiaobudiu/article/details/79288257 MySQL的慢查询日志可以用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过 long_query_time 值的SQL,则会被记录到慢查询日志中(日志可以写入文件或者数据库表,如果对性能要求高的话,建议写文件)。默认情况下,MySQL数据库...转载 2019-05-14 19:58:54 · 102 阅读 · 0 评论