随笔分类 -  Mysql--碎片知识

摘要:发生死锁,第一时间查看死锁日志 在分析日志前,我们要知道InnoDB中锁在日志中具体显示的数据类型,平时我们常接触到的是Record Locks(记录锁),Gap Locks(间隙锁),Next-Key Locks和Insert Intention Locks(插入意向锁)。这四种锁对应的死锁如下: 阅读全文
posted @ 2024-01-11 16:34 caibaotimes 阅读(668) 评论(0) 推荐(2) 编辑
摘要:innodb一定存在聚簇索引,默认以主键作为聚簇索引 有几个索引,就有几棵B+树(不考虑hash索引的情形) 聚簇索引的叶子节点为磁盘上的真实数据。非聚簇索引的叶子节点还是索引(id主键值),指向聚簇索引B+树。 锁类型: 共享锁(S锁):假设事务T1对数据A加上共享锁,那么事务T2可以读数据A,不 阅读全文
posted @ 2024-01-11 15:24 caibaotimes 阅读(2820) 评论(2) 推荐(3) 编辑
摘要:死锁 原因:并发事务在执行过程中,因争夺锁资源而造成互相等待。 加锁顺序导致死锁:不同表加锁顺序相反、相同表不同行加锁顺序相反,其中相同表不同行加锁顺序相反造成死锁有很多变种,其中容易忽略的是给辅助索引行加锁的时候,同时会给聚集索引行加锁;同时还可能出现在外键索引时,给父表加锁,同时隐含给子表加锁; 阅读全文
posted @ 2024-01-10 16:29 caibaotimes 阅读(228) 评论(0) 推荐(0) 编辑
摘要:在实际的业务场景中,经常会遇到这样的需求:插入某条记录,但如果数据库中有这条记录的话那就作相应的处理(忽略或者更新),正常情况下需要程序分多个步骤去完成这样的需求,在MySQL中提供了两种方式去简化这个操作,那就是使用insert...on duplicate key update、replace 阅读全文
posted @ 2023-04-26 15:25 caibaotimes 阅读(138) 评论(0) 推荐(0) 编辑
摘要:where执行顺序是从左往右执行的, 遵守原则:排除越多数据的条件放在第一个。 MySQL中,AND的执行优先级高于OR。也就是说,在没有小括号()的限制下,总是优先执行AND语句,再执行OR语句。 select * from table where 条件1 AND 条件2 OR 条件3 等价于 s 阅读全文
posted @ 2023-04-26 15:16 caibaotimes 阅读(1853) 评论(0) 推荐(0) 编辑
摘要:如题,sql 报错:Table is specified twice, both as a target for 'UPDATE' and as a separate source for data。表被指定了两次,同时作为 update 对象和独立数据源。 报错场景:查询两个表的差集并更新记录。举 阅读全文
posted @ 2021-10-11 13:48 caibaotimes 阅读(1879) 评论(0) 推荐(0) 编辑
摘要:需要注意的是: 1.用into将select出来的值赋给declare的变量 2.if判断如果是非空的可以用=,如果是数字还可以> 、<,但是如果像判断是null ,就要用 xxx is null 了 3.注意各个句结束时别丢分号 mysql中判断使用=,编程习惯了老是写==,很容易忽略 searc 阅读全文
posted @ 2021-09-10 14:51 caibaotimes 阅读(101) 评论(0) 推荐(0) 编辑
摘要:众所周知,MySQL的复制延迟是一直被诟病的问题之一,在MySQL 5.7版本已经支持“真正”的并行复制功能,官方称为为enhanced multi-threaded slave(简称MTS),因此复制延迟问题已经得到了极大的改进。总之,MySQL 5.7版本后,复制延迟问题永不存在。 GTID ( 阅读全文
posted @ 2021-04-16 16:10 caibaotimes 阅读(1507) 评论(0) 推荐(0) 编辑
摘要:SQL语句的中关键字执行顺序须知 关键字简述: FROM:确定数据来源,即指定表; JOIN...ON:确定关联表和关联条件; WHERE:指定过滤条件,过滤出满足条件的数据; GROUP BY:按指定的字段对过滤后的数据进行分组; HAVING:对分组之后的数据指定过滤条件; SELECT:查找想 阅读全文
posted @ 2021-04-15 18:35 caibaotimes 阅读(180) 评论(0) 推荐(0) 编辑
摘要:一、MySQL的数据库主从复制原理 MySQL主从复制实际上基于二进制日志,原理可以用一张图来表示: 分为四步走: 主库对所有DDL和DML产生的日志写进binlog; 主库生成一个 log dump 线程,用来给从库I/O线程读取binlog; 从库的I/O Thread去请求主库的binlog, 阅读全文
posted @ 2021-04-14 19:15 caibaotimes 阅读(696) 评论(0) 推荐(0) 编辑
摘要:开启慢sql查询 开启慢sql查询 修改配置文件my.cnf,在[mysqld]下的下方加入 [mysqld] slow_query_log = ON slow_query_log_file = /usr/local/mysql/data/slow.log long_query_time = 1 / 阅读全文
posted @ 2021-04-13 20:23 caibaotimes 阅读(87) 评论(0) 推荐(0) 编辑
摘要:聚簇索引 InnoDB 的数据是按照主键顺序存放的,而聚集索引就是按照每张表的主键构造一颗 B+ 树,它的叶子节点存放的是整行数据。 每张 InnoDB 表都有一个聚集索引,但是不一定有主键。 - 使用非聚簇索引查询数据时,一定要回表查询吗? 回表查询是由于非聚簇索引的B+Tree叶子节点只记录了, 阅读全文
posted @ 2021-04-13 18:58 caibaotimes 阅读(454) 评论(2) 推荐(1) 编辑
摘要:因为: 数据库出现瓶颈,系统的吞吐量出现访问速度慢 随着应用程序的运行,数据库的中的数据会越来越多,处理时间变长 数据读写速度缓慢 就是咱们说的“性能问题”,程序员一遇到它总是焦头烂额! 优化 like 前导符优化 like模糊查询形如'%AAA%'和'%AAA'将不会使用索引,但是业务上不可避免可 阅读全文
posted @ 2021-04-13 17:42 caibaotimes 阅读(470) 评论(0) 推荐(0) 编辑
摘要:MySQL可以通过field()函数自定义排序 格式: field(value,str1,str2,str3,str4) mysql> select * from driver_log order by name; + + + + + | rec_id | name | trav_date | mi 阅读全文
posted @ 2021-03-03 10:24 caibaotimes 阅读(473) 评论(0) 推荐(0) 编辑
摘要:首先,convert函数 字符集转换 : CONVERT(xxx USING gb2312) CAST(xxx AS 类型), CONVERT(xxx,类型),类型必须用下列的类型: 可用的类型 二进制,同带binary前缀的效果 : BINARY 字符型,可带参数 : CHAR() 日期 : DA 阅读全文
posted @ 2021-02-26 14:13 caibaotimes 阅读(578) 评论(0) 推荐(0) 编辑
摘要:MySQL字符串的拼接、截取、替换、查找位置。 MySQL中的 CONCAT(sl,s2,...) 函数返回结果为连接参数产生的字符串,或许有一个或多个参数。 若有任何一个参数为 NULL,则返回值为 NULL。若所有参数均为非二进制字符串,则结果为非二进制字符串。若自变量中含有任一二进制字符串,则 阅读全文
posted @ 2021-01-22 10:31 caibaotimes 阅读(521) 评论(0) 推荐(0) 编辑
摘要:mysql删除重复记录并且只保留一条(deptno id,dname 名字) 第一种方法: 根据depno来判断,除了rowid最小的一个 SELECT * FROM dept WHERE dname IN ( SELECT dname FROM dept GROUP BY dname HAVING 阅读全文
posted @ 2021-01-19 14:47 caibaotimes 阅读(208) 评论(0) 推荐(0) 编辑
摘要:mysql中的条件语句主要有if 和case when。 IF(expr1,expr2,expr3):如果第一个条件为True,则返回第二个参数,否则返回第三个 select if(author='Felix', 'yes', 'no') as AU from test; 用case when实现i 阅读全文
posted @ 2021-01-02 10:25 caibaotimes 阅读(564) 评论(0) 推荐(0) 编辑
摘要:一、有主键去重 a、单字段重复 查询重复记录(一条) select aid from ab group by aid having count(*)>1 查询重复记录(全部) select * from ab t where t.aid in(select aid from ab group by 阅读全文
posted @ 2020-12-28 23:05 caibaotimes 阅读(214) 评论(0) 推荐(0) 编辑
摘要:MySQL 8.0已经不支持下面这种命令写法 grant all privileges on *.* to root@"%" identified by "."; 正确的写法是先创建用户 CREATE USER 'root'@'%' IDENTIFIED BY 'Hadoop3!'; 再给用户授权 阅读全文
posted @ 2020-12-21 00:00 caibaotimes 阅读(945) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示