
MySQL
文章平均质量分 80
山鬼谣me
我的这一生
展开
-
MySQL学习笔记:模型2
MySQL45讲》原创 2022-11-16 15:08:21 · 555 阅读 · 0 评论 -
MySQL学习笔记:索引2
MySQL45讲》原创 2022-11-07 11:25:42 · 480 阅读 · 0 评论 -
MySQL学习笔记:事务2
MySQL45讲》原创 2022-10-27 16:16:31 · 725 阅读 · 0 评论 -
MySQL学习笔记:锁2
MySQL45讲》原创 2022-10-21 11:51:13 · 817 阅读 · 0 评论 -
MySQL学习笔记:JSON嵌套数组查询
MySQL 5.7简单JSON串就不说了,很简单,来个复杂点的:在MySQL数据库中,它长这个样子:网上很多都是先对象,然后再嵌套数组,但是我的数据先是个数组,然后嵌套对象,然后再嵌套数组。这种情况下,该如何查询呢?现在想查询,JSON串中城市字段是上海的。............原创 2022-06-07 16:52:54 · 6752 阅读 · 2 评论 -
Mybatis Generator将tinyint映射成Integer的解决办法
环境Java:1.8+mybatis:3.3.0mybatis-generator-core:1.3.5前言今天遇到了这么一个错误:TicketMonitorServiceImpl.personMonitorPage.error org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error resolving class. Cause原创 2021-12-02 21:30:50 · 8703 阅读 · 0 评论 -
MySQL学习笔记:等值查询、范围查询、死锁、间隙锁的本质
环境MySQL:5.7.26-log前言答疑文章(二):用动态的观点看加锁原则 1:加锁的基本单位是 next-key lock。希望你还记得,next-key lock 是前开后闭区间。原则 2:查找过程中访问到的对象才会加锁。优化 1:索引上的等值查询,给唯一索引加锁的时候,next-key lock 退化为行锁。优化 2:索引上的等值查询,向右遍历时且最后一个值不满足等值条件的时候,next-key lock 退化为间隙锁。一个 bug:唯一索引上的范围查询会访问到不满足条件的第一个原创 2021-12-01 14:13:47 · 4976 阅读 · 0 评论 -
MySQL学习笔记:Group By是否允许SELECT非聚合列
环境mysql : 5.7.26-log前言笔记,非教程;最近做的需求,需要用到group by,刚好发现自己有点陌生,所以做个笔记;看到网上资料说:# 这种写法会报错,但是我在实践中发现不会报错;所以简单研究了# MySQL如果开启了严格模式(sql_model=ONLY_FULL_GROUP_BY)才会报错select * ... group by ...语句group by分组函数一般都会和group by联合使用!这也是为什么它被称为分组函数的原因。任何一个分组函数(coun原创 2021-11-17 22:39:59 · 9129 阅读 · 0 评论 -
MySQL 锁(二):间隙锁笔记
环境MySQL:5.x 系列前言大部分知识点来自于,下面的文章:21 | 为什么我只改一行的语句,锁这么多?间隙锁MySQL间隙锁在可重复读隔离级别下才有效。间隙锁和读写锁的小区别间隙锁之间是不会冲突的,只有往间隙中插入数据的操作,才会被阻塞。这一点和我们平时认识的锁是不一样的,常见的锁被阻塞,一般都是被另一个锁引起的。加锁规则查找过程中访问到的对象才会加锁,加锁的基本单位是next-key lock(前开后闭);等值查询:如果是唯一索引,next-key lock退化为行锁。原创 2021-10-28 16:56:04 · 805 阅读 · 0 评论 -
MySQL索引explain显示中extra字段显示分析一
MySQL 索引下推:当进行索引查询时,首先根据索引来查找记录,然后再根据where条件来过滤记录;在支持ICP优化后,MySQL会在取出索引的同时,判断是否可以进行where条件过滤再进行索引查询,也就是说提前执行where的部分过滤操作。explain 查询MySQL索引字段时,extra字段说明Using where;Using indexUsing index :没有进行全表扫描;Using where : 使用了过滤;如果是在有索引的情况下(该列有索引),那么它的作用和Using in原创 2021-10-22 14:04:48 · 559 阅读 · 0 评论 -
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
环境MySQL:8+在执行类似这样的语句时:SELECT * from template_detail a group by template_id;然后报错了:1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ssm.template_detail.id' which is not functionally dependent on columns原创 2021-05-06 21:04:13 · 6991 阅读 · 0 评论 -
mysql分组后,取每组第一条数据或最新一条
环境MySQL:5.7Java:1.8SQL语句的写法:select * from (select distinct(a.id) tid, a.* from template_detail a where a.template_id in (3, 4) order by a.id desc) ttgroup by tt.template_id;思路:先进行排序,然后再进行分组,获取每组的第一条。Q: 为什么要写distinct(a.i原创 2021-05-06 20:51:41 · 85402 阅读 · 14 评论 -
MySQL学习笔记:事务
环境MacBook Pro序言MySQL 技术内幕 InnoDB 存储引擎 第二版事务事务的四个特性:① 原子性② 隔离性③ 一致性④ 持久性其中,隔离性,是由锁来保证的。原子性、一致性、持久性则是通过redo log和undo log来完成。名称描述记录格式读取方式redo log重做日志;用来保证事务的原子性和持久性物理日志,记录页的物理修改操作基本上是顺序读undo log用来保证事务的一致性逻辑日志;根据每行记录进行记录随机读Q原创 2020-12-22 18:49:08 · 351 阅读 · 0 评论 -
MySQL学习笔记:锁
环境MacBook Pro序言MySQL 技术内幕 InnoDB 存储引擎 第二版锁MySQL有两种标准的行级锁:① 共享锁 (S Lock)允许事务读取一行数据;② 排它锁 (X Lock)允许事务删除或更新一行数据排它锁和任何锁都不兼容,共享锁只和共享锁兼容意向锁MySQL为了支持多粒度锁定:允许事务在行级上的锁和表级上的锁同时存在。...原创 2020-12-11 18:49:28 · 235 阅读 · 0 评论 -
MySQL学习笔记:基础模型三 索引
环境MacBook Pro序言MySQL 技术内幕 InnoDB 存储引擎 第二版Q : B+索引能通过给定的键值找到具体行吗?A : 不能,B+树索引能找到的只是被查找数据行所在页。然后数据库通过把页读进内存,再在内存中查找,最后得到要查找的数据。Q:基于上面的问题,那么在内存中是如何进行查找的呢?A:我们知道每页Page Directory中的槽是按照主键顺序存放的,对于某一条具体记录的查询是通过对Page Directory进行二分查找找到的。B+树的演化而来二叉查找树 —&g原创 2020-11-23 19:46:39 · 486 阅读 · 0 评论 -
MySQL学习笔记:基础模型二 分区
环境MacBook Pro序言MySQL 技术内幕 InnoDB 存储引擎 第二版分区表MySQL只支持局部分区索引,一个分区中即存放了数据又存放了索引。全局分区:数据存放在各个分区中,但是所有的数据的索引放在一个对象中。mysql目前只支持局部分区启用分区后,表不再由一个ibd文件组成,而是各个分区ibd文件组成;如:t#P#p0.ibd, t#P#p1.ibd 类似这样的格式;分区类型支持 range,list,hash, linear hash, key, columns 类原创 2020-11-13 20:03:04 · 261 阅读 · 0 评论 -
MySQL学习笔记:表的备份和重命名、临时表的使用和not int的替换写法
环境MacBook Pro备份表并重命名DROP TABLE IF EXISTS new_table;CREATE TABLE new_table LIKE old_table;INSERT INTO new_table SELECT * FROM old_table;-- 假设第三条SQL检测不通过,就把具体的字段写出来原创 2020-08-04 18:31:02 · 620 阅读 · 2 评论 -
MySQL 学习笔记: 二次写
环境MacBook pro前言今天再看MySQL技术内幕第二版书时,对二次写很疑惑;明明有redo 文件,并且记录了所有的变化,而且还是物理日志;为什么在断点的情况下,还是不能恢复数据?查阅资料后,大体了解下,但是依然似懂非懂,做个笔记日志的数据格式这里给出网上说法:物理日志A. 记录完整的PageB. 记录Page中被修改的部分(page中的偏移,内容和长度逻辑日志记录在关系(表)上的一个元组操作。A. 插入一行记录。B. 修改一行记录。C. 删除一行记录。逻辑日志比起物原创 2020-07-08 20:18:49 · 369 阅读 · 0 评论 -
MySQL学习笔记:基础模型一
环境MacBook Pro序言MySQL 技术内幕 InnoDB 存储引擎 第二版后台线程MySQL是多线程模型,因此有个多个不同的后台线程,负责处理不同的任务。Master Thread额外的内存池在 InnnoDB 存储引擎中,对内存的管理是通过一种称为内存堆的方式进行的。在对一些数据结构本身的内存进行分配时,需要从额外的内存池中进行申请,当该区域的内存不够时,会从缓存池中进行申请。例如,分配了缓冲池(innodb_buffer_pool),但是每个缓冲池中的帧缓冲(frame原创 2020-06-22 19:23:00 · 310 阅读 · 0 评论 -
MySQL学习笔记:普通查询、流式查询和游标查询的理解
前言今天因为公司业务原因,使用了游标查询,只是感觉很奇怪,我以为MySQL和mongodb一样,默认就是游标查询,网上查询资料了解时还发现了流式查询。这篇,其实就是个人笔记,毕竟MySQL出来已经很久很久了,网上资料一大堆。相比MySQL,我本人更擅长用mongodb,因为用了它三年。普通查询普通查询,将查询后的结果集,全部塞给客户端;量大的话,就可能报OOM 内存溢出。流式查询流...原创 2020-03-10 23:12:32 · 8709 阅读 · 4 评论 -
MySQL学习笔记:2038和1970年份问题
环境MySQL:5.1.45前言今天遇到了这么一个和时间有关的bug,纠结了很久。表中时间类型为:TIMESTAMP类型错误如下:主要错误信息:Data truncation: Incorrect datetime value: '2038-12-31 00:00:00.0' for column正文查询资料后,才知道,原来:当 timestamp 存储的时间大于 ‘20...原创 2020-02-06 16:01:31 · 3156 阅读 · 0 评论 -
MySQL java.sql.SQLException: Incorrect string value
环境Java:1.8MySQL:前言调用接口时,报了个这样的错误:java.sql.SQLException: Incorrect string value: '\xE8\xB4\xA6\xE6\x88\xB7...' for column 'accountName' at row 1查阅后,知道是字符编码问题造成的;解决知道原因后,对面表右键选择设计表 - 选项 - 默认字符集...原创 2019-08-27 11:21:57 · 11626 阅读 · 4 评论