数据库
文章平均质量分 72
a栋栋栋
这个人很忙,什么都没留下~
展开
-
B树、B+树与磁盘读取的关系
由于存储介质的特性,磁盘本身存取就比主存慢很多,再加上机械运动耗费,磁盘的存取速度往往是主存的几百分分之一,因此为了提高效率,要尽量减少磁盘I/O。磁盘往往不是严格按需读取,而是每次都会预读,即使只需要一个字节,磁盘也会从这个位置开始,顺序向后读取一定长度的数据放入内存。涉及局部性原理:当一个数据被用到时,其附近的数据也通常会被使用。【空间局部性】程序运行期间所需要的数据通常比较集中。当一个数据被用到时,程序执行后期该数据也通常会被使用。【时间局部性】由于磁盘。原创 2024-05-30 19:14:06 · 1261 阅读 · 0 评论 -
SQL操作面试题
左表score表写在left join前面是主表,因此左表的数据记录全部会出现在结果集中,而右表student中的记录如果在主表中没找到匹配,就不会出现在结果集中,上面的s_id=8的记录就没有出现在最终结果中。这里的重点是是用什么连接,需要考虑好哪个是主表,哪个是从表。假如还是使用左连接,但是表的顺序互相换一下,结果就会完全不同。NULL的话只能通过ISNULL和ISNotNULL去进行判断,而' ' 可以用<,>,=等等,更加灵活。只能通过COUNT(*)3、左连接、右连接、内连接、全连接、交叉连接。原创 2024-05-15 23:26:04 · 142 阅读 · 0 评论 -
MySQL数据库核心面试题
存储引擎、索引、事务、锁以及索引和锁之间的关系原创 2024-05-14 22:28:06 · 960 阅读 · 0 评论 -
写SQL的心得
接着,系统按照 GROUP BY 子句中的指定字段分组,并对每个分组进行计算,生成虚拟的分组结果表。执行顺序 :from > on > where > group by > having > select > distinct > order by > top。4、聚合函数本质:对指定的列进行聚合,如果我们用了group by,我们可以对每个分组应用内聚合函数。在分组内部,聚合函数会自动处理所有重复的行。具体来说,在执行 SELECT 子句时,系统先计算 SELECT 中的列表达式和函数等,然后。原创 2024-05-11 18:24:52 · 793 阅读 · 5 评论 -
SQL常用函数
1、CURDATE() / CURRENT_DATE 返回当前日期2、CURRENT_TIME()/CURTIME() 返回当前时间3、CURRENT_TIMESTAMP 返回当前日期+时间4、DATE()从日期或日期时间表达式中提取日期值5、DATEDIFF(d1,d2)计算日期 d1->d2 之间相隔的天数6、DATE_FORMAT按表达式 f的要求显示日期 d7、UNIX_TIMESTAMP()得到时间戳8、FROM_UNIXTIME()时间戳转日期二、字符串相关函数1、CONCAT(原创 2024-05-11 12:22:18 · 438 阅读 · 0 评论 -
Innodb实现的索引
②不用B树,因为:对于同一个页单位【页单位大小固定】,如果又存放Key又存放指针,那么存放的指针会很少,导致数值数量一样的情况下,B树会比B+树更深,查询的更慢,而B+树因为在非叶子结点中的页单位里,只存放指针,那么一个页单位可以存放很多个指针(相对B树),那么B+树的层级就会低,查询效率提高。如select id,name from a where name = jack ,因为name是二级索引,通过该索引查到了id,也就是主键值,不需要回表查询,所以叫做覆盖索引,因此尽量不要使用select *。原创 2024-05-07 17:57:09 · 792 阅读 · 0 评论 -
SQL优化
mysql5.5版本以上默认使用Innodb存储引擎。页是Innodb磁盘管理的最小单元,页里面存放的是多个行数据(默认大小16k)。页(Page)可以为空,也可以填充一半,也可以填充100%,但是不能只放一个数据,这样和单纯的链表没有任何区别。当然,如果行数据过长,也可能会发生行溢出,页中的数据排列顺序是根据主键排列。原创 2024-04-24 22:43:29 · 227 阅读 · 0 评论 -
MySQL的InnoDB引擎如何保证事务的持久性和隔离性
在来一个DML语句请求的时候,缓冲页会看有没有该数据(不考虑change buffer),没有的话从磁盘中读取到缓冲页,然后直接在缓冲页中操作该数据,这个时候当前页为脏页,需要进行刷新,但是如果在刷新的过程出错,怎么办?等到脏页刷新完成后,可以认为redo log不需要了,进行定期清理,等下一个事务需要的时候,又往里面填写内容,文件不会删除,而是重复利用。回滚日志,在insert的时候,产生undo log日志在事务提交后,可被立即删除,因为insert语句只有在回滚的时候被需要,进行快照读的时候不需要。原创 2024-04-03 12:30:18 · 414 阅读 · 1 评论 -
数据库中的锁
发现1个18,前面间隙和18加锁,后面再发现再同操作加锁,再发现不是18,这个不是18的索引不锁,锁它前面的间隙,也就成了间隙锁。原创 2024-04-03 18:55:58 · 525 阅读 · 1 评论