![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
mysql学习笔记
文章平均质量分 81
笔记
WeakHashMap
版本任你发,我用java8!
展开
-
Mysql事务隔离级别与锁机制
MyISAM在执行查询语句SELECT前,会自动给涉及的所有表加读锁,在执行update、insert、delete操作会自动给涉及的表加写锁。InnoDB在执行查询语句SELECT时(非串行隔离级别),不会加锁。但是update、insert、delete操作会加行锁。简而言之,就是读锁会阻塞写,但是不会阻塞读。而写锁则会把读和写都阻塞。原创 2023-04-21 23:27:32 · 146 阅读 · 0 评论 -
MySql优化实战案例
MySQL支持两种方式的排序filesort和index,Using index是指MySQL扫描索引本身完成排序。index效率高,filesort效率低。order by满足两种情况会使用Using index。order by语句使用索引最左前列。使用where子句与order by子句条件列组合满足索引最左前列。尽量在索引列上完成排序,遵循索引建立(索引创建的顺序)时的最左前缀法则。如果order by的条件不在索引列上,就会产生Using filesort。原创 2023-04-19 02:04:15 · 70 阅读 · 0 评论 -
索引设计原则
尽量先把业务sql写完,根据sql来看看如何建索引比如可以设计一个或者两三个联合索引(尽量少建单值索引,联合索引尽量覆盖 mysql一般只会选一个索引走,很多where可能只走一个,单值索引占用空间大),让每一个联合索引都尽量去包含sql语句里的where、order by、group by的字段,还要确保这些联合索引的字段顺序尽量满足sql查询的最左前缀原则。性别这种不是男就是女的没啥用。原创 2023-04-19 00:48:09 · 48 阅读 · 0 评论 -
一条SQL在MySQL中是如何执行的
类似命令连接,或者Navicat:连接命令中的 mysql 是客户端工具,用来跟服务端建立连接。在完成经典的 TCP 握手后,连接器就要开始认证你的身份,输入正确的账号密码后。mysql到系统user表中查出的你的权限加载到类似会话的,这时候修改权限后必须连接才会生效。建立链接后默认不操作,自动断开。:比较鸡肋,而且8.0后已删除:分析你的sql语句是否符合规范,生成语法树语法树:在java中也可以做,比如分布式事务上可以用语法树来分析回滚补偿的sql语句。原创 2023-04-18 23:34:49 · 43 阅读 · 0 评论 -
Explain详解与索引最佳实践
因为文件中维护着两个索引树,聚簇索引的叶子阶段存着表的所有数据,二级索引的叶子节点存放着聚簇索引的id,以供回表查询。原因还是因为b+树的索引存放是有序的。:扫描全索引就能拿到结果,一般是扫描某个二级索引,这种扫描不会从索引树根节点开始快速查找,而是直接对二级索引的叶子节点遍历和扫描,速度还是比较慢的,这种查询一般为使用覆盖索引,二级索引一般比较小,所以这种通常比ALL快一些。:相比 eq_ref,不使用唯一索引,而是使用普通索引或者唯一性索引的部分前缀,索引要和某个值相比较,可能会找到多个符合条件的行。原创 2023-04-16 23:31:52 · 73 阅读 · 0 评论 -
Mysql索引的分析
mysql一次大概能读16k的数据到内存,所以如果索引列为bigint,根据计算大概一个节点可以放1170个元素,6的为指向下一个节点地址,所以也能放将近1170个,最后的带data就算他1k每一个,所以查询1170乘1170乘16的数据量,只要查询3次的io,大大加快了速度。其他列的辅助索引,例如根据name进行索引,data存放的是聚集索引的值。索引也是一个数据结构,存储在磁盘,key是你要查的值,data为值在磁盘上的位置,所以如果能越快找到索引的key,就能越快找到索引的data。原创 2023-04-16 00:57:36 · 149 阅读 · 0 评论