其乐融融的IT技术小站

数据库

MySQL

我们一起聊聊MySQL 索引的底层逻辑

11

其乐融融 发布于 2024/01/09 01:33:13

本文以 MySQL 数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是, MySQL 支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此 MySQL 数据库支持多种索引类型,如 B-Tree 索引,哈希索引,全文索引等等。为了避免混乱,将只关注于 B-Tree 索引,因为这是平常使用 MySQL 时主要打交道的索引。

阅读()评论(0)赞 ()

MySQL

MySQL:MDL LOCK的“穿越行为”

1

其乐融融 发布于 2024/01/08 01:33:42

语句是否能够执行主要看的优先级矩阵和兼容矩阵,前者用于判断本次执行的语句和堵塞中的MDL LOCK谁的优先级更高,优先级更高则可以继续判断兼容矩阵。

阅读()评论(0)赞 ()

MySQL

MySQL:InnoDB的页合并与页分裂到底是什么

12

其乐融融 发布于 2024/01/08 01:33:14

不管是页分裂还是页合并,InnoDB都会在索引树上加写锁(x-latch)。在操作频繁的系统中这会是在隐患,可能会导致索引的锁竞争(index latch contention)。如果表中没有合并和分裂操作(也就是写操作),称之为“乐观(optimistic)”更新,只需要使用读锁(S)。带有合并或者分裂的操作称之为“悲观(pessimistic)”更新,使用写锁(X)。​

阅读()评论(0)赞 ()

SQL Server

如何获取一条SQL语句中涉及的表名

3

其乐融融 发布于 2024/01/08 01:26:28

在数据库操作和SQL查询的开发过程中,有时候我们为了动态生成查询、进行权限控制、进行查询优化或者其他一些与数据库交互相关、数据库监控等的需求,需要从SQL语句中提取表名。

阅读()评论(0)赞 ()

SQL Server

为什么要使用ODBC连接SQL Server?

0

其乐融融 发布于 2024/01/08 01:26:26

ODBC 和 JDBC 都提供了一种通用的方式来访问数据库,允许开发人员使用标准 SQL 语句来操作各种不同类型的数据库。ADO.NET则是微软针对 .NET 平台开发的数据库访问接口,提供了与 ODBC 类似的功能,但更加面向对象,具有更好的性能和可扩展性。

阅读()评论(0)赞 ()

MySQL

MySQL:MySQL的自增主键是连续自增吗?

2

其乐融融 发布于 2023/12/26 01:33:10

在普通的 insert 语句里面包含多个 value 值的情况下,即使 innodb_autoinc_lock_mode 设置为 1,也不会等语句执行完成才释放锁。因为这类语句在申请自增 id 的时候,是可以精确计算出需要多少个 id 的,然后一次性申请,申请完成后锁就可以释放了。

阅读()评论(0)赞 ()

MySQL

DDD死党:单引擎查询利器

10

其乐融融 发布于 2023/12/19 01:33:21

本文从一个日常开发场景出发,提出两个关键问题:代码过于繁琐,容易出错,同时开发效率低下;对性能设计关注不足,容易遗漏,产生性能问题;对于性能问题,从 MySQL B+Tree 进行推演,总结出该场景下的最佳使用实践,并将其提取为规范。

阅读()评论(0)赞 ()

SQL Server

分布式 SQL 数据库与表格优化技术

13

其乐融融 发布于 2023/12/15 01:26:10

分布式 SQL 数据库会将应用程序数据存储在多个节点上,从存储和计算的角度提高了可扩展性。这种分布意味着某些应用程序请求,包括 JOIN 操作和聚合,可能跨多个数据库节点,可能导致数据在网络中的传输。

阅读()评论(0)赞 ()