- 在线 DDL 不锁表修改结构。MySQL ALGORITHM=INPLACE,元数据修改快,数据修改慢。工具:gh-ost GitHub 开源,binlog 同步,可暂停。pt-osc Percona Toolkit,触发器同步。限制:某些操作仍需锁(如改主键)。最佳实践:小表直接改,大表用工具。测试环境验证。低峰期执行。监控锁等待。 文章从技术背景和发展历程入手,帮助读者理解该技术的产生原... 在线 DDL 不锁表修改结构。MySQL ALGORITHM=INPLACE,元数据修改快,数据修改慢。工具:gh-ost GitHub 开源,binlog 同步,可暂停。pt-osc Percona Toolkit,触发器同步。限制:某些操作仍需锁(如改主键)。最佳实践:小表直接改,大表用工具。测试环境验证。低峰期执行。监控锁等待。 文章从技术背景和发展历程入手,帮助读者理解该技术的产生原...
- 慢查询是数据库性能问题最常见的信号,处理思路分三步:先找到它,再分析它,最后优化它。第一步,开启慢查询日志。把 long_query_time 设为合适的阈值,比如 1 秒,SQL 执行超过这个时间就会被记录。也可以用 performance_schema 或 sys 库查看实时统计。第二步,分析 SQL。使用 EXPLAIN 查看执行计划,重点关注这几项:type 是否是 ALL(全表扫描... 慢查询是数据库性能问题最常见的信号,处理思路分三步:先找到它,再分析它,最后优化它。第一步,开启慢查询日志。把 long_query_time 设为合适的阈值,比如 1 秒,SQL 执行超过这个时间就会被记录。也可以用 performance_schema 或 sys 库查看实时统计。第二步,分析 SQL。使用 EXPLAIN 查看执行计划,重点关注这几项:type 是否是 ALL(全表扫描...
- 预约系统中同一资源的时段重叠是常见并发问题。本文以 PostgreSQL 为例,启用 btree_gist 扩展,使用 EXCLUDE USING gist 与 tstzrange 建立排他约束,在插入时捕获 exclusion_violation 异常并返回友好提示,给出可运行的最小示例与边界说明。 预约系统中同一资源的时段重叠是常见并发问题。本文以 PostgreSQL 为例,启用 btree_gist 扩展,使用 EXCLUDE USING gist 与 tstzrange 建立排他约束,在插入时捕获 exclusion_violation 异常并返回友好提示,给出可运行的最小示例与边界说明。
- 从“事后救火”到“事前调优”:AI 如何重塑 SQL 性能监测与优化数据库性能问题向来是运维与开发团队最头疼的领域之一。传统的 SQL 监测手段并不缺数据,缺的是从数据到洞察的转化效率。慢查询日志、pg_stat_statements、执行计划分析——这些工具产出的信息量巨大,但真正能定位根因并给出可执行建议的,仍然依赖经验丰富的 DBA 逐条排查。而 AI 的介入,正在改变这一局面:它不... 从“事后救火”到“事前调优”:AI 如何重塑 SQL 性能监测与优化数据库性能问题向来是运维与开发团队最头疼的领域之一。传统的 SQL 监测手段并不缺数据,缺的是从数据到洞察的转化效率。慢查询日志、pg_stat_statements、执行计划分析——这些工具产出的信息量巨大,但真正能定位根因并给出可执行建议的,仍然依赖经验丰富的 DBA 逐条排查。而 AI 的介入,正在改变这一局面:它不...
- 表结构设计影响性能和可维护性。命名规范:snake_case,见名知义。字段设计:合适类型、NOT NULL+默认值、注释。主键:自增ID/雪花ID/业务主键。索引:频繁查询字段、JOIN 字段、唯一约束。避免:过大字段(TEXT/BLOB 单独表)、过多字段(垂直拆分)、冗余字段(适度反范式)。版本管理:DDL 脚本化,Flyway/Liquibase。 表结构设计影响性能和可维护性。命名规范:snake_case,见名知义。字段设计:合适类型、NOT NULL+默认值、注释。主键:自增ID/雪花ID/业务主键。索引:频繁查询字段、JOIN 字段、唯一约束。避免:过大字段(TEXT/BLOB 单独表)、过多字段(垂直拆分)、冗余字段(适度反范式)。版本管理:DDL 脚本化,Flyway/Liquibase。
- 读写分离分散压力。主库写,从库读。实现:应用层路由(多数据源+注解/AOP)、中间件代理(MyCat/ProxySQL/ShardingSphere)。延迟问题:刚写的数据从库读不到,强制路由主库、延迟感知(记录最后写时间,延迟内读主库)。从库负载均衡:轮询、权重。故障切换:从库挂了自动剔除。 文章从技术背景和发展历程入手,帮助读者理解该技术的产生原因和演进脉络。通过对比不同版本的特性变化,... 读写分离分散压力。主库写,从库读。实现:应用层路由(多数据源+注解/AOP)、中间件代理(MyCat/ProxySQL/ShardingSphere)。延迟问题:刚写的数据从库读不到,强制路由主库、延迟感知(记录最后写时间,延迟内读主库)。从库负载均衡:轮询、权重。故障切换:从库挂了自动剔除。 文章从技术背景和发展历程入手,帮助读者理解该技术的产生原因和演进脉络。通过对比不同版本的特性变化,...
- 查询重写提升性能和可读性。子查询转 JOIN:相关子查询每行执行,JOIN 一次完成。OR 转 UNION:OR 条件可能索引失效,UNION ALL 分别查询。NOT IN 转 NOT EXISTS:NOT IN 对 NULL 敏感,NOT EXISTS 更安全。DISTINCT 转 EXISTS:去重排序慢,EXISTS 找到即返回。COUNT 优化: EXISTS 替代 COUNT(*... 查询重写提升性能和可读性。子查询转 JOIN:相关子查询每行执行,JOIN 一次完成。OR 转 UNION:OR 条件可能索引失效,UNION ALL 分别查询。NOT IN 转 NOT EXISTS:NOT IN 对 NULL 敏感,NOT EXISTS 更安全。DISTINCT 转 EXISTS:去重排序慢,EXISTS 找到即返回。COUNT 优化: EXISTS 替代 COUNT(*...
- ## 一、现象:一个"时好时坏"的接口某天下午开始,告警群里陆续有人反馈"订单列表加载慢"。打开监控,看到的曲线很耐人寻味——| 指标 | 正常时 | 故障时 ||---|---|---|| P50 | 45ms | 52ms || P99 | 120ms | **2100ms** || 错误率 | 0.01% | 3.7% || CPU | 35% | 41% || Full GC | 0... ## 一、现象:一个"时好时坏"的接口某天下午开始,告警群里陆续有人反馈"订单列表加载慢"。打开监控,看到的曲线很耐人寻味——| 指标 | 正常时 | 故障时 ||---|---|---|| P50 | 45ms | 52ms || P99 | 120ms | **2100ms** || 错误率 | 0.01% | 3.7% || CPU | 35% | 41% || Full GC | 0...
- PostgreSQL 11 起支持 INCLUDE 非键列。本文以 users 表按 email 查询 id、name 为例,演示 CREATE INDEX ... INCLUDE 的写法、用 EXPLAIN 验证 Index Only Scan、Heap Fetches 的含义,以及索引膨胀、可见性映射、键列与包含列差异等边界。 PostgreSQL 11 起支持 INCLUDE 非键列。本文以 users 表按 email 查询 id、name 为例,演示 CREATE INDEX ... INCLUDE 的写法、用 EXPLAIN 验证 Index Only Scan、Heap Fetches 的含义,以及索引膨胀、可见性映射、键列与包含列差异等边界。
- 软删除后,普通唯一约束仍会拦住同一邮箱的再次注册。本文介绍如何用 PostgreSQL 部分唯一索引(WHERE deleted_at IS NULL)让已删除记录退出唯一校验,给出可运行的建表、迁移、插入测试与 ON CONFLICT 写法,并说明外键、索引推断与数据清理等边界。 软删除后,普通唯一约束仍会拦住同一邮箱的再次注册。本文介绍如何用 PostgreSQL 部分唯一索引(WHERE deleted_at IS NULL)让已删除记录退出唯一校验,给出可运行的建表、迁移、插入测试与 ON CONFLICT 写法,并说明外键、索引推断与数据清理等边界。
- SQL 数据库备份实战:从基础命令到自动化备份与数据恢复 一、为什么数据库备份如此重要?在日常开发和运维工作中,SQL 数据库通常保存着系统最重要的数据,例如用户信息、订单记录、业务配置和交易数据。一旦发生服务器故障、误删数据、程序异常或数据库损坏,就可能造成严重的数据丢失。因此,建立完善的数据库备份机制,是保障数据安全和业务连续性的重要措施。数据库备份的主要作用包括:防止数据丢失: 在误... SQL 数据库备份实战:从基础命令到自动化备份与数据恢复 一、为什么数据库备份如此重要?在日常开发和运维工作中,SQL 数据库通常保存着系统最重要的数据,例如用户信息、订单记录、业务配置和交易数据。一旦发生服务器故障、误删数据、程序异常或数据库损坏,就可能造成严重的数据丢失。因此,建立完善的数据库备份机制,是保障数据安全和业务连续性的重要措施。数据库备份的主要作用包括:防止数据丢失: 在误...
- SQL注入是Web应用常见的高危风险之一。通常可从“发现风险、确认风险、评估影响与修复”三个环节理解。本文从防御和合规测试角度说明其原理与治理方法,不提供可直接用于攻击的载荷。安全测试应仅在获得明确授权的环境中进行。一、发现风险:识别可能的注入面判断数据库类型与访问方式:不同数据库在语法、错误信息和特性上存在差异。了解目标系统使用的数据库类型、ORM框架和查询方式,有助于制定防护和测试策略。... SQL注入是Web应用常见的高危风险之一。通常可从“发现风险、确认风险、评估影响与修复”三个环节理解。本文从防御和合规测试角度说明其原理与治理方法,不提供可直接用于攻击的载荷。安全测试应仅在获得明确授权的环境中进行。一、发现风险:识别可能的注入面判断数据库类型与访问方式:不同数据库在语法、错误信息和特性上存在差异。了解目标系统使用的数据库类型、ORM框架和查询方式,有助于制定防护和测试策略。...
- ORM 对象关系映射,简化数据库操作。对象映射表,属性映射字段,方法映射 SQL。优势:开发效率高,数据库无关性。劣势:性能损耗,复杂查询困难。主流框架:Java MyBatis/Hibernate,Python SQLAlchemy/Django ORM,Node.js Sequelize/TypeORM。最佳实践:简单 CRUD 用 ORM,复杂查询用原生 SQL。N+1 问题:预加载解... ORM 对象关系映射,简化数据库操作。对象映射表,属性映射字段,方法映射 SQL。优势:开发效率高,数据库无关性。劣势:性能损耗,复杂查询困难。主流框架:Java MyBatis/Hibernate,Python SQLAlchemy/Django ORM,Node.js Sequelize/TypeORM。最佳实践:简单 CRUD 用 ORM,复杂查询用原生 SQL。N+1 问题:预加载解...
- 我为什么把“代码评审”从走过场变成了救命绳刚入行那几年,我对代码评审(Code Review)的态度很敷衍:不就是走个流程吗?扫一眼,写句“LGTM”(Looks Good To Me),赶紧合并,别耽误上线。直到我亲手埋下的一个 Bug 在生产环境炸了,才彻底明白:评审不是形式主义,是团队给你上的最后一道保险。那次事故很简单,也很蠢。我写了一个“批量更新订单状态”的接口,SQL 大概是:... 我为什么把“代码评审”从走过场变成了救命绳刚入行那几年,我对代码评审(Code Review)的态度很敷衍:不就是走个流程吗?扫一眼,写句“LGTM”(Looks Good To Me),赶紧合并,别耽误上线。直到我亲手埋下的一个 Bug 在生产环境炸了,才彻底明白:评审不是形式主义,是团队给你上的最后一道保险。那次事故很简单,也很蠢。我写了一个“批量更新订单状态”的接口,SQL 大概是:...
- 介绍如何用 PostgreSQL 的 SELECT ... FOR UPDATE SKIP LOCKED 在单表上实现多 worker 并发消费的任务队列,给出表结构、原子拉取 SQL 和 Python 最小示例,并说明状态字段、重试计数、延迟重试与超时恢复的处理方式,最后讨论至少一次语义、幂等要求和适用边界。 介绍如何用 PostgreSQL 的 SELECT ... FOR UPDATE SKIP LOCKED 在单表上实现多 worker 并发消费的任务队列,给出表结构、原子拉取 SQL 和 Python 最小示例,并说明状态字段、重试计数、延迟重试与超时恢复的处理方式,最后讨论至少一次语义、幂等要求和适用边界。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签