数据库 从入门到精通
文章平均质量分 88
数据库是几乎所有软件系统的“心脏”,无论是 Web 应用、移动 App,还是大数据与 AI 平台,都离不开对数据的高效存储与访问。本专栏从零开始,系统讲解数据库的核心理论、主流技术栈与企业级实践,涵盖关系型(MySQL、PostgreSQL、Oracle)与非关系型(Redis、MongoDB、El
龙茶清欢
人生百年,终归尘土;心有所向,纵死不虚。人生的意义,不是被赋予的,而是在一次次选择中锻造出来的。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySQL和PostgreSQL的数据库主键索引都是B+树吗?
MySQL和PostgreSQL主键索引默认都使用B-Tree或其变种(B+Tree),但实现方式不同。InnoDB采用聚集索引,表数据存储在B+Tree叶子节点中;PostgreSQL使用堆表,索引存储指向数据的指针。B-Tree结构提供高效的O(log n)查询性能,适合磁盘存储和范围查询。两者差异主要在于数据组织方式:MySQL数据按主键排序存储,PostgreSQL数据独立于索引,采用堆存储。这种根本区别导致了查询路径、插入性能等方面的不同特性。原创 2025-09-25 23:00:43 · 927 阅读 · 0 评论 -
PostgreSQL 和 MySQL两个数据库的索引的区别
PostgreSQL和MySQL的索引功能存在显著差异。两者都支持B-Tree、唯一索引等基本类型,但PostgreSQL提供更丰富的索引类型(如GIN、GiST、BRIN),支持部分索引、并发创建索引等高级功能,适合复杂查询场景。MySQL则更侧重实用性,支持全文索引和空间索引,适合传统Web应用。PostgreSQL的索引体系更灵活强大,而MySQL在简单CRUD和高并发OLTP场景中表现更成熟。根据需求选择:复杂数据用PostgreSQL,常规Web应用用MySQL。原创 2025-09-25 23:01:21 · 1107 阅读 · 0 评论 -
一般来说主键索引的树深度有几层?为什么是这个层数?
大型数据库表的主键索引B+树深度通常仅3-4层,极少达到5层。这得益于B+树的高扇出特性:每个16KB节点可存储约1170个键值指针(假设8字节主键+6字节指针)。计算表明,3层B+树可支持2200万行数据,4层则能支持256亿行。影响树深的关键因素包括页大小、主键长度和行数据大小,因此建议使用短小的自增整数作为主键以保持索引高效。这种设计确保了即使处理海量数据,查询也只需3-4次I/O操作。原创 2025-09-25 23:02:26 · 864 阅读 · 0 评论 -
一般来说,数据库表设计必备和备选的字段
数据库表设计必备的"黄金6字段":主键id、软删除标志is_deleted、创建时间created_at、更新时间updated_at、创建人created_by和修改人updated_by。这些字段虽不直接参与业务,但对系统运维、审计和扩展至关重要,能提升数据安全性、可追溯性和维护性。进阶可选字段包括版本号、状态、租户ID等。良好的表设计应考虑数据全生命周期管理,避免后期扩展困难。原创 2025-09-25 23:03:16 · 677 阅读 · 0 评论 -
Flyway 数据库版本控制和迁移工具详细使用指南
Flyway是一款开源的数据库版本控制工具,用于管理数据库schema变更。它通过版本化、可重复的迁移脚本,确保各环境数据库结构一致,解决手动执行SQL易出错、变更难追踪等问题。Flyway支持多种数据库和脚本格式,自动记录执行历史并提供事务支持。在Spring Boot 3项目中集成Flyway需添加相关依赖,配置数据源并禁用Hibernate自动建表。SQL迁移脚本需遵循命名规范存放在db/migration目录下,Flyway会在应用启动时自动执行未应用的脚本。配置文件中可设置基线版本、校验机制等参数原创 2025-10-02 11:06:29 · 879 阅读 · 0 评论 -
什么是数据库的分库、分表、分片?他们都有什么作用?
分库、分表、分片是解决单机数据库性能瓶颈的分布式技术。分库是将数据库拆分成多个独立库,分表是将大表拆分为子表,分片是二者的统称。它们通过水平扩展(如按用户ID、时间等分片键)分散数据存储和查询压力,适用于高并发、大数据量系统。核心优势包括提升查询性能、扩展存储能力、实现故障隔离,但会带来跨库查询复杂、事务支持困难等挑战。实际开发中可根据项目规模选择应用层分片、中间件(如ShardingSphere)或数据库原生分区(PostgreSQL)等方案。原创 2025-09-30 23:44:44 · 689 阅读 · 0 评论 -
PostgreSQL 和 MySQL 数据库建表脚本示例参考
urbane-commerce 电商系统数据库摘要 核心设计 采用微服务架构,包含12个核心服务模块 支持MySQL 8.0+和PostgreSQL 14+ 遵循企业级规范,具备高并发和可扩展性 关键特性 安全认证:独立用户认证表,密码BCrypt加密,Token黑名单机制 数据分离:用户认证信息与个人资料解耦设计 审计追踪:所有表包含创建/更新时间戳 性能优化:使用BIGINT自增主键,合理索引设计 主要模块 认证服务:用户基础表、Token黑名单 用户服务:个人资料、收货地址管理 扩展能力:预留商品、订原创 2025-09-30 23:39:55 · 329 阅读 · 0 评论 -
怎么实现自动记录和统计 SELECT 慢查询?
本文将介绍如何在Java项目中自动记录和统计PostgreSQL慢查询。首先通过配置postgresql.conf开启慢查询日志,设置合理阈值并重启服务。其次推荐使用pg_stat_statements扩展统计SQL性能,提供多个实用SQL示例来识别耗时查询。最后介绍Java应用层的实现方案:1)使用p6spy拦截JDBC操作记录慢SQL;2)结合HikariCP和监控工具实现可视化分析。这些方法能帮助开发者及时发现性能瓶颈,优化数据库访问。原创 2025-09-30 23:36:12 · 859 阅读 · 0 评论 -
SELECT 的查询优化方案有哪些?
PostgreSQL SELECT 查询优化指南 本文总结了10种PostgreSQL SELECT查询优化方案,包括索引优化、SQL重写、执行计划分析等关键策略。针对Java开发场景,提供了可落地的SQL示例和中文注释,帮助解决实际开发中的性能问题。 核心优化点包括: 为高频字段创建B-tree/GIN索引 避免WHERE中使用函数导致索引失效 使用游标分页替代深度OFFSET 通过EXPLAIN ANALYZE定位性能瓶颈 合理设计复合索引顺序 使用分区表和物化视图处理大数据量 优化效果显著,如索引优化原创 2025-09-30 00:39:28 · 953 阅读 · 0 评论 -
SELECT 查询推荐做法总结
PostgreSQL SELECT 查询最佳实践: 避免SELECT *,明确指定字段以提高性能、安全性和可维护性; 优化分页,使用游标分页替代OFFSET避免深度分页性能问题; 合理使用索引,为常用查询字段创建索引提升效率; 优先使用JOIN,减少N+1查询问题,降低数据库连接次数; 复杂逻辑放数据库层,利用GROUP BY和窗口函数替代Java处理; 开发阶段分析执行计划,通过EXPLAIN ANALYZE优化慢查询。 核心原则:减少数据传输、利用数据库原生能力、提升查询可读性与性能。适用于电商、金融等原创 2025-09-30 00:38:37 · 976 阅读 · 0 评论
分享