数据库
DaiZZZZZ
java 工程师
展开
-
mysql sql 优化
排查瓶颈慢sqlprofilesql优化减少扫描函数加合适的索引。如组合索引如何避免索引失效?避免 索引字段的运算、避免null筛选、避免前置通配、避免反向计算(not in、not like)减少join表的循环行数小表驱动大表避免内存排序用索引来优化排序。如 select避免回表操作如用聚集索引查询数据。如 count(*) 和 count(id) 的区别...原创 2021-04-21 15:10:19 · 187 阅读 · 0 评论 -
docker 部署 mysql 无法开启binlog的问题排查
问题描述基于 mysql:5.6镜像,将宿主机的/etc/mysql/mysql-cnf目录挂载至 容器的/etc/mysql/conf.d。宿主机/etc/mysql/mysql-cnf内有config-file.conf作为配置文件,内容如下[mysqld]log-bin = /var/lib/mysql/mysql-binbinlog_format = ROWexpire-logs...原创 2019-10-18 11:10:03 · 1556 阅读 · 0 评论 -
mysql中的各种锁
锁的分类隔离级别:共享锁(S锁)、排他锁(X锁)。粒度:行级锁、表级锁。意向锁:获得行级 S锁、X锁 的前提是获得意向锁。在锁整张表的事务中,可以根据是否有意向锁进行快速判断,而无须检查每行数据是否被上锁。间隙锁、next-key lock:用索引进行范围查询,会将范围内的记录加锁(行级锁),范围内**不存在的值(间隙)**也会被加上锁(间隙锁),防止事务中发生幻读。测试各种情况下的...原创 2019-09-28 21:58:41 · 265 阅读 · 0 评论 -
mysql redo、undo 简介
undo日志undo日志用来实现事务的回滚。当发生insert、update、delete时,会将插入前的数据记录写入undo日志,用于将数据回滚至事务开始前的状态。redo日志记录事务的日志。若机器崩溃后,重新运行mysql需要进行数据的修复。保证机器崩溃后的数据一致性。已完成、未提交的事务:进行事务重放。未完成的事务:事务回滚。...原创 2019-09-08 16:10:33 · 195 阅读 · 0 评论 -
mysql 的排序
索引排序要求排序列处于同一个索引中,且符合左侧优先原则。可以参考另一篇关于索引文章 https://blog.csdn.net/DaiZZZZZ/article/details/100024707内存排序在sort buffer中进行排序。单路排序全字段排序,即将数据全部放入sortBuffer,排序完成后返回数据集。双路排序仅将表的主键、排序字段 存入sort buffer,排序...原创 2019-09-08 15:36:49 · 190 阅读 · 0 评论 -
mysql 的 in 操作 无法使用索引?
select * from table where status=1 and p_id in (1,2,3,4,5)mysql 会将 in 列表中的筛选条件与 其他条件进行排列组合,转化成等值筛选,如select * from table where status=1 and p_id = 1select * from table where status=1 and p_id = 2…...原创 2019-08-25 00:15:48 · 1851 阅读 · 1 评论 -
如何使用 mysql 的索引
索引的类型常见的索引类型 有哈希索引 和 b+tree 索引哈希索引:存放列的哈希值,只能用于全值匹配b+tree索引:将列的值按照树的结构有序的组织在一起。因为 存储原值、有序 等特点,b+树索引可以用于 范围查询、排序、前缀匹配( where col like 'xxx%')下文的内容主要针对 B+树 索引。建立索引单列索引、多列索引、列前缀索引(add index INDEX...原创 2019-08-24 23:26:15 · 184 阅读 · 0 评论 -
mysql explain 命令
select type:查询语句在 在 sql 结构上的类型type:读取数据的方式原创 2019-08-05 08:48:48 · 143 阅读 · 0 评论 -
mysql 的 update select 语句
以下是udpate select 语句的例子,结构与select 比较相似UPDATE table1 INNER JOIN table2 ON table1.id = table2.fk_idSET col1 = table2.col1, col2 = table2.col2原创 2019-08-02 13:35:48 · 10386 阅读 · 0 评论 -
我对 mysql 的 mvcc 的理解
mvcc的作用及原理mvcc 即 multiversion concurrency controller,多版本并发控制,是数据库隔离事务的一种实现方法,不同的事务读取的逻辑上的同一行,但实际上是同一行的多个不同版本。一行数据还有几个隐含字段,标记行号,事务号,上一个版本的记录号(回滚指针)不可重读 的mvcc事务开始,执行第一条语句后,即建立了当前数据的快照(应该是逻辑上的快照)。读取到一...原创 2019-04-13 23:41:29 · 630 阅读 · 0 评论 -
由 serverTimezone 产生的一个疑问
参数设置连接在 jdbc url 后加上参数serverTimezone=UTC查询结果执行show variables like '%time_zone%',返回system_time_zone CSTtime_zone SYSTEM执行select now(),返回的时间 比当前时间 快了8 小时。...原创 2019-12-23 20:48:26 · 962 阅读 · 0 评论 -
mysql count、sum 函数在统计null值时的结果
count函数情况结果0行0多行,包含null值0多行 ,全是null值0count函数会自动忽略null值sum函数情况结果0行null多行,包含null值不为null多行 ,全是null值null必须只有有一行不为null的数值,结果才不为null...原创 2019-11-12 09:48:10 · 2261 阅读 · 0 评论 -
mysql my.ini配置文件中的 max_allowed_packet
max_allowed_packet 的默认值为4M。项目中,插入图片数据,sql语句很长,插入失败。在my.ini文件中将max_allowed_packet该为16MB后,插入成功。在此做记录,具体原因尚待分析。原创 2017-06-07 19:41:56 · 1278 阅读 · 0 评论