标签: database
与该标签相关的所有文章 "database".
-
微服务(三):多实例共享数据库为什么不需要额外同步
多个无状态服务实例访问同一个 PostgreSQL,不需要分布式锁或 Redis 互斥。数据库的 MVCC + 事务 + 约束已经处理了并发控制。你唯一需要操心的是业务层"先读后写"的竞态,而这个问题单实例多 goroutine 也一样存在,解决方案全在 SQL 层面(原子 SQL、乐观锁、SELECT FOR UPDATE、唯一约束)。
-
GORM(三):生产环境最佳实践
GORM 在生产环境中最常翻车的地方不是功能缺失,而是默认行为与开发者直觉不一致:零值更新被吞、Session 条件污染、软删除隐式过滤、连接池耗尽。本篇系统梳理连接池四参数调优公式、Logger/PreparedStmt/DBResolver 配置、12 个真实生产陷阱(附正反代码)、性能优化策略、以及 GORM/sqlc/sqlx/Ent/Bun 五种方案的选型决策矩阵。
-
GORM(二):关联与预加载
GORM 支持四种关联类型(Belongs To / Has One / Has Many / Many To Many)和多态关联。默认是懒加载(不自动加载关联),用 Preload 做 eager loading(2 条 SQL 解决 N+1),用 Joins 做单条 JOIN 查询(适合按关联字段过滤)。Association Mode 提供 Find/Append/Replace/Delete/Clear/Count 六种操作管理关联关系。
-
GORM(一):核心用法与设计决策
GORM 是 Go 生态最主流的 ORM,通过 struct tag 映射模型、method chaining 构建查询、自动事务保证写入一致性。核心概念:gorm.Model 提供 ID/时间戳/软删除,Session/Statement 架构解决链式调用的状态污染问题,Save() 更新全字段而 Updates() 只更新非零值字段。v1.30.0+ 引入 Generics API 提供类型安全。