答:先定位容量瓶颈,确认单库的索引、查询、数据保留和扩展手段已无法满足目标,再考虑切分。分片键要兼顾热点分布、主要访问路径和迁移。
答:binlog 是 MySQL 服务器层的二进制日志,常用于复制和按位置或时间恢复。它按格式记录可复制变化,与 InnoDB 用于页恢复的 redo、用于回滚和旧版本的 undo 各有职责。
答:在实例内检查 log_bin 是否开启,查看 log_bin_basename 和 log_bin_index,再用 SHOW BINARY LOGS 看已登记文件。实际路径可能由启动配置和数据目录决定。
答:自增值可能在插入或批量操作中先分配,之后事务回滚、失败、并发分配或删除都会留下缺口。自增机制保证的是按规则分配,编号不承诺连续。
答:LIMIT 1000000 表示最多返回一百万行,首先要处理结果量。LIMIT 1000000, 20 则要跳过一百万行再取二十行,主要问题可能是深偏移。两者优化方向不同。
答:优先把规则写成原子条件更新,或使用版本校验、合适的锁定读。执行后检查影响行数和事务结果,防止多个请求根据相同旧值覆盖彼此。
答:先找慢的是哪类查询、哪个参数和哪个阶段。数据量大只是背景,实际可能卡在扫描、回表、热点更新、锁、I/O 或网络。用执行计划和等待证据选动作。
答:从常用查询出发,让等值、范围和排序与索引顺序匹配,并保持类型和比较语义正确。检查实际计划,区分用索引定位、过滤、覆盖和排序。
答:IN 判断成员关系,EXISTS 判断是否存在匹配行。很多写法可由优化器转换,不能简单说谁必定更快。尤其要核对 NOT IN 遇到 NULL 的语义。
答:先明确记录的是全球时间点还是某地日历时间。TIMESTAMP 写入和读取会按会话时区转换,DATETIME 保留给定日期时间字段。地区预约还可能需要保存时区标识。