数据库基本原理
架构
连接器
数据库连接器会为每个连接请求分配一块专用的内存空间用于会话上下文管理。
缓存
对于相同的 SQL,可以直接从缓存获取结果,不需要进行 SQL 解析和查询。
语法分析器
将 SQL 语句解析成一个语法树。
语义分析与优化器
语义分析与优化器根据语法树将各种复杂嵌套的 SQL 进行语义等价转化,得到有限几种关系代数计算结构,并利用索引等信息进一步进行优化。
执行引擎
根据优化后的语法树,生成执行计划,
使用 PrepareStatement 的好处
1、性能
PrepareStatement 会预先提交带占位符的 SQL 到数据库进行预处理,提前生成执行计划,当给定占位符参数,真正执行 SQL 时,执行引擎可以直接执行,不需要每次都对 SQL 进行解析,效率更好。
2、安全
防止一些带特殊字符的参数,拼接的 SQL 可能引起 SQL 注入攻击。
索引
索引通常使用的数据结构是 B+树。
聚簇索引:数据库记录和索引存在在一起,其中数据库记录存储在叶子结点。
非聚簇索引:叶子结点保存的是主键,通过非聚簇索引查找到主键索引,再通过主键索引再到聚簇索引上进行查找,这个过程叫回表。
合理使用索引
添加必要的索引:添加索引操作会消耗较长的时间,期间增删改操作全部阻塞,索引会增加增删改的开销。
使用小的数据类型创建索引:减小 B+树的大小,可以减小存储空间,也可以提升查找效率。
事务
事务的四个特性:原子性、隔离性、持久性、一致性。
数据库如何实现事务:
进行事务操作时,事务日志文件(UNDO、REDO)会记录更新前的数据记录,然后再更新数据库中的记录,如果全部记录都更新成功,那么事务正常结束,如果过程中某条记录更新失败,那么整个上事务全部回滚,已更新的记录根据事务日志中记录的数据进行恢复,这样全部了数据都恢复到事务提交前的状态,保持数据一致性。
评论