![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
wjg_selected
这个作者很懒,什么都没留下…
展开
-
SQL的一些关键语法解析
关键语法GROUP BY(按某个条件进行分组)HAVING(过滤组)统计相关:COUNT、SUM、MAX、MIN、AVGGROUP BY:满足select子句的列名必须为分组列或列函数、列函数对于GROUP BY子句定义的每个组各返回一个结果。GROUP BY里出现某个表的字段,select里面的列要么是该GROUP BY里出现的列,要么是别的表的列或者带有COUNT、SUM等函数的列HAVING:通常与GROUP BY子句一起使用、WHERE过滤行,HAVING过滤组、出现在同一SQL的顺原创 2021-06-23 17:00:22 · 72 阅读 · 0 评论 -
关于幻读的一些问题
当前读和快照读当前读:加了锁(排它锁、共享锁)的增删改查语句快照读:不加锁的非阻塞读InnoDB可重复隔离级别下如何避免幻读?(1)next-key锁(行锁+gap锁)、gap锁:锁定一个范围,但不包括记录本身,为了防止同一事务的两次当前读。(2)若where条件全部命中。则不会用Gap锁,只会加记录锁(3)如果where条件部分命中或者全不命中,则会加Gap锁(4)Gap锁会用在非唯一索引或者不走索引的当前读中...原创 2021-06-23 16:21:25 · 44 阅读 · 0 评论 -
数据库的事务及各隔离级别下的并发问题
ACID:1.原子性(Atomic)2.一致性(Consistency)3.隔离性(Isolation)4.持久性(Durability)原创 2021-06-23 15:58:19 · 67 阅读 · 0 评论 -
数据库引擎MyISAM和InooDB锁的区别
MyISAM和InooDB关于锁的区别1.MyISAM默认用的是表级锁,不支持行级锁2.InooDB默认用的是行级锁,也支持表级锁,没有使用索引的列,会上表级锁共享锁和排它锁的兼容排它锁共享锁排它锁冲突冲突共享锁冲突兼容MyISAM适合的场景1.频繁执行全表count语句(MyISAM会用一个变量保存表的行数)2.对数据进行增删改的频率不高,查询非常频繁3.没有事务InooDB适合的场景1.数据增删改查都相当频繁2.可靠性要求比较高(支持事务)原创 2021-06-21 16:35:09 · 88 阅读 · 0 评论 -
索引建立的越多越好吗
当然不是!!!1.数据表小不需要建立索引,建立索引会增加额外的索引开销2.数据变更需要维护索引,因此更多的索引意味着更多的维护成本3.更多的索引意味着更多的空间原创 2021-06-21 15:44:52 · 314 阅读 · 0 评论 -
联合索引的最左匹配原则的成因
最左前缀匹配原则1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 3 and b = 4 and c > 5 and d = 6如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。2.=和in可以乱序,比如a = 1 and b = 2and c = 3建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化原创 2021-06-21 15:41:15 · 362 阅读 · 0 评论 -
如何调优SQL
如何定位并优化慢查询SQL1.根据慢日志定位定位慢查询sqlshow variable like '%quer%';本次会话的慢sql条数show status like '%slow_queries%';打开慢查询日志set global slow_query_log=on;设置慢查询时间set global long_query_time=1;2.利用explain分析慢日志例如explain select name from student order by name d原创 2021-06-21 15:25:27 · 42 阅读 · 0 评论 -
密集索引和稀疏索引的区别
密集索引:密集索引文件中的每个搜索码值都对应一个索引值稀疏索引:稀疏索引文件只为索引码的某些值建立索引项对于InoDB:若一个主键被定义,该主键则作为密集索引若主键没有被定义,该表的第一个唯一非空索引则作为密集索引若不满足以上条件,InnoDB内部会生成一个隐藏主键(密集索引)非主键索引存储相关键位和其对应的主键值,包括两次查找...原创 2021-06-21 11:31:40 · 198 阅读 · 0 评论 -
数据库架构及常见索引
一、关系数据库管理系统(RDBMS)的构成:1.程序实例:存储管理、缓存机制、SQL解析、日志管理、权限划分、容灾机制、索引管理、锁管理2.存储(文件系统)二、索引模块1.为什么要使用索引?数据较多时避免全表扫描,使用索引可以快速查询数据2.什么信息可以成为索引?主键、唯一键以及普通键等3.索引的数据结构(1)生成索引,建立二叉查找树进行二分查找(2)生成索引,建立BTree结构进行查找B-Tree特征:1)根节点至少包括两个孩子2)树中每个节点最多含有m个孩子(m>=2原创 2021-06-19 16:20:59 · 103 阅读 · 0 评论