MySQL
文章平均质量分 87
MySQL
今天你写代码了吗??
好记性不如烂笔头!
展开
-
【MySQL】为什么不推荐使用uuid或者雪花id作为主键?
①:写入的目标页很可能已经刷新到磁盘上并且从缓存上移除,或者还没有被加载到缓存中,innodb在插入之前不得不先找到并从磁盘读取目标页到内存中,这将。因为uuid相对顺序的自增id来说是毫无规律可言的,新行的值不一定要比之前的主键的值要大,所以innodb。使用UUID或雪花ID(Snowflake ID)作为主键并不是完全不推荐的,而是。①下一条记录就会写入新的页中,一旦数据按照这种顺序的方式加载,主键页就会。这个过程需要做很多额外的操作,数据的毫无顺序会导致数据。②新插入的行一定会在原有的。原创 2023-08-16 13:33:35 · 1253 阅读 · 1 评论 -
【MySQL】多表查询
之所以查询emp表的所有数据和对应的部门信息不能用内连接,因为可能emp表的员工可能没有部门,那么在内查询的情况下,只能查到有部门的员工信息,而没有部门的员工就被忽略了。union all 会将全部的数据直接合并在一起,union 会对合并之后的。,要不然我们不清楚所指定的条件、返回的字段,到底 是哪一张表的字段。无论是左连接还是右连接,(左或右)朝向谁,谁查的数据就多(全数据)(数字、字符串、日期等),最简单的形式,这种子查询称为标量子查询。:查询emp表的所有数据, 和对应的部门信息。原创 2023-08-16 12:23:18 · 655 阅读 · 0 评论 -
【MySQL】MVCC的实现原理
例如下图:事务5查询的是哪个事务版本的记录?MVCC的具体实现,主要依赖于数据库记录中的、、含义:每存储一行数据,除了自定义的字段外,还有数据库的 DB_TRX_ID, DB_ROLL_PTR, DB_ROW_ID 等字段含义:回滚日志,在insert、update、delete的时候并且在多个事务同时操作同一行数据时,会产生:(如果是insert操作,只要事务没有回滚,那么会直接删除此条undo log日志)以此类推,不同事务或相同事务对同一条记录进行修改,会导致该记录的undolog生成,链表的,原创 2023-08-02 17:22:03 · 471 阅读 · 0 评论 -
【MySQL】当前读和快照读
对于我们日常的操作,如:select …lock in share mode(共享锁),select …for update、update、insert、delete(排他锁)都是一种当前读。在学习 MVCC 多版本并发控制之前,必须先了解一下,什么是 MySQL InnoDB 下的。同样还是这张图,在RC策略等级下 两次读到的数据时不一样的,读到的数据依然是最新数据。这里不管是读还是更新还是写数据或者删除数据,都是加了锁的,自然效率不高。,读取时还要保证其他。原创 2023-08-02 16:13:28 · 525 阅读 · 0 评论 -
【高频面试题】MySQL篇
索引(index)是帮助MySQL高效获取数据的数据结构(有序)提高数据检索的效率降低数据库的IO成本(不需要全表扫描)通过索引列对数据进行排序,降低数据排序的成本降低了CPU的消耗聚簇索引:数据与索引放到一块,B+树的叶子节点保存了整行数据,有且只有一个非聚簇索引数据与索引分开存储,B+树的叶子节点保存对应的主键,可以有多个要解释回表,就得解释一下聚簇索引和非聚簇索引。通过二级索引找到对应的主键值,到聚集索引中查找整行数据,这个过程就是回表。原创 2023-08-01 17:03:37 · 393 阅读 · 0 评论