
select
最稳妥方式是带缓冲channel+sync.WaitGroup+单独goroutine关channel+forrange自动退出;因直接close易致panic、漏数据或阻塞,须确保所有生产者完成后再...
MySQL8.0.18+默认对无索引等值连接使用HashJoin,但需满足类型兼容、优化器估算更优等条件;有索引时仍首选NLJ。
删除MySQL用户应使用DROPUSER‘user’@‘host’语句,它自动回收权限并刷新权限表;不可直接DELETE系统表,需先用SELECT检查用户存在性,注意用户名与主机名共同唯一标识用户。
MySQL最大风险源是默认空密码的root账户及多主机同名账户,须立即查删空密账户、启用密码策略、创建最小权限账号、限制监听地址并降低日志敏感度。
INNERJOIN不等价于集合交集,而是笛卡尔积后按ON条件过滤的行对组合,会产生重复行;真正等价的是IN或INTERSECT。
Go项目应封装数据库操作以剥离连接管理、错误处理、事务控制和SQL组织;用sqlx替代database/sql提升开发效率,注意正确初始化、命名参数和结构体映射;SQL应外置到文件并用embed加载;...
意向锁是InnoDB多粒度锁机制的基础设施,事务执行SELECT...FORUPDATE或LOCKINSHAREMODE时自动在表级加IX或IS锁,用于快速判断表中是否存在行锁,避免全表扫描行锁状态。
主从复制通过读写分离缓解读多写少压力,但需应用层路由、处理复制延迟、避免从库误写,并注意跨机房容灾限制。
间隙锁是InnoDB在REPEATABLEREAD级别下锁定索引中两值间空档(如(5,10))以防止幻读的机制,仅对范围查询或非唯一索引等值未命中时触发,不阻塞其他间隙锁但会阻塞插入。
分区表需配合查询条件中的分区键才能生效,否则全分区扫描性能更差;分区键须为高频过滤字段且分布均匀;非分区键字段仍需建索引;主键或唯一索引必须包含分区键;时间分区适合快速归档。