首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
h2database专题
Insight h2database 执行计划评估以及 Selectivity
生成执行计划是任何一个数据库不可缺少的过程。通过本文看执行计划生成原理。 最优的执行计划就是寻找最小计算成本的过程。 本文侧重 BTree 索引的成本计算的实现 以及 基础概念选择度的分析。 寻找最优执行计划 找到最佳的索引,实现最少的遍历,得到想要的结果 单表查询情况 /*** 根据查询条件,获取最佳执行计划.** @param masks per-column compar
阅读更多...
Insight h2database SQL like 查询
我们认为的 SQL like 查询和优化技巧,设计的初衷和真正的实现原理是什么。 在 h2database SQL like 查询实现类中(CompareLike),可以看到 SQL 语言到具体执行的实现、也可以看到数据库尝试优化语句的过程,以及查询优化的原理。可以做为条件语句的经典案例去分析。 我们熟知的索引前缀匹配,实现过程和局限可以通过源码体现。 文章中的查询不只局限在 Select 语句
阅读更多...
Insight h2database auto increment 实现原理
起因 最近排查线上问题发现业务 Table 自增id 不连续,进一步发现是事务回滚造成。 -- 上述问题示例。 这样的情况就导致 main_table 自增id 并不连续/出现空挡。START TRANSACTION;-- 执行成功,自增id 已分配INSERT INTO main_table VALUES (?, ?, ?);-- 执行失败,事务 rollbackINSERT IN
阅读更多...
h2database BTree 设计实现与查询优化思考
h2database 是使用Java 编写的开源数据库,兼容ANSI-SQL89。 即实现了常规基于 BTree 的存储引擎,又支持日志结构存储引擎。功能非常丰富(死锁检测机制、事务特性、MVCC、运维工具等),数据库学习非常好的案例。 本文理论结合实践,通过BTree 索引的设计和实现,更好的理解数据库索引相关的知识点以及优化原理。 BTree 实现类 h2database 默认使用的
阅读更多...