mysql
weixin_43887958
这个作者很懒,什么都没留下…
展开
-
mysql innodb
https://zhuanlan.zhihu.com/p/50560758磁盘和内存每页是4K,mysql的页是16K.B+数每个节点默认都是16K(可能不到16K),mysql一次读取一个节点.原创 2021-07-30 16:57:44 · 75 阅读 · 0 评论 -
查看mysql binlog
mysqlbinlog --no-defaults [–database=t_user] --start-datetime=‘2021-07-06 00:00:00’ --stop-datetime=‘2021-07-06 11:00:00’ --base64-output=decode-rows -v binlog.000018 | moremysqlbinlog有一个参数–verbose(或-v),将自动生成带注释的SQL语句(在行事件中重构伪SQL语句),其实这个并非原始SQL语句,而是伪SQL原创 2021-07-06 10:53:00 · 71 阅读 · 0 评论 -
not exists和not in
select * from t1 where not exists (subQuery)判断subQuery是否结果为空,为空返回true.select * from t1 where id not in(subQuery)判断’‘subQuery=id’’,当subQuery的结果中含有null时,任何值和null比永远返回false.当subQuery含有null时,not in永远返回的是false,也就不会返回任何结果集....原创 2021-07-01 15:04:42 · 41 阅读 · 0 评论 -
mybatis-plus-join
前言在有主键的前提下:1.含有其他索引字段: 用explain,会发现这三个执行流程一模一样,都用的是其他索引.2.不含其他索引字段: 用explain,会发现count(*)和count(1)用的是主键索引,count(col)是没用索引的.在没有主键的前提下:1.含有其他索引字段: 用explain,会发现这三个执行流程一模一样,都用的是其他索引.2.不含其他索引字段: 用explain,会发现count(*),count(1),count(col)这三个都是没用索引的.先说结原创 2021-06-17 18:32:57 · 2004 阅读 · 0 评论 -
in 和 exists
A表数据数量为m,B表数据中和A有关的数据数量为n.select * from A where A.id in(select B.aid from B) 先执行子查询,将结果放到内存中,在执行主查询进行条件筛选.缓存n条数据,再用m条数据进行条件筛选,筛选m*n次.select * from A where exists( select 1 from B where B.aid = A.id)先执行主查询, 查出m条数据,再进行m次查询.in:for(int i = 0;i<m;i++){原创 2021-05-27 14:11:56 · 43 阅读 · 0 评论 -
mysql分组与case when
问题:一个学生成绩表,里面有语文,数学,英语等类型成绩,用type=(0,1,2)表示,求每一个学生分别参加过多少次语文,数学,英语,以及总共参加过多少次比赛,也就是要返回的列为:学生id语文次数数学次数英语次数总次数score表结构如下:student_idtypescore1010021100301001110020100321002310030100答案:select原创 2021-05-17 10:18:09 · 415 阅读 · 1 评论 -
mysql8主从复制
mysql5.7时允许多线程复制,原理是同时处于prepared的事务都是可以并行执行的,因为能进入prepared阶段的说明已经拿到了锁,既然不同的事务同时拿到了锁,那么就不可能冲突,所以可以同时执行的.AtomicInteger globalTransactionId;thread1:{ beginTransaction(); excute("update user set age = 10"); commit();}thread2:{ beginTransaction(); exc原创 2021-04-08 12:43:58 · 57 阅读 · 0 评论 -
mysql8主从
grant replication slave on . to ‘test’@’%’ identified by ‘123456’;上面语句在mysql8中无法执行,修改为两步:create user ‘test’@’%’ identified by ‘123456’;grant replication slave on . to ‘test’@’%’;注意:master和slave的server_id不能一样,通过命令来修改:set global server_id=2修改后查看:show原创 2021-04-07 18:17:49 · 83 阅读 · 0 评论 -
mysql8.0子查询的order by无效
最近一个需求:查询最近视频的历史观看记录.课程表(t_course)如下:idnameprice视频表(t_video)如下:idvideo_urlcourse_id记录表(t_record)如下:用户在观看一个视频后会将update_time更新一下iduser_idvideo_idcourse_idcreate_timeupdate_time第一种错误sql:select * from t_record where us原创 2021-03-04 18:21:23 · 564 阅读 · 4 评论