-
事务的ACID特性是指原子性、一致性、隔离性和持久性。原子性确保事务中的所有操作全做或全不做;一致性保证数据库从一个一致状态转移到另一个一致状态;隔离性防止多个事务并发执行时相互干扰;持久性确保事务提交后其结果永久保存。事务通过redolog、undolog和锁机制保障数据一致性。RedoLog用于崩溃恢复,UndoLog支持回滚和MVCC,锁机制则控制并发访问,避免脏读、不可重复读和幻读。正确使用事务需合理控制事务边界并选择合适的隔离级别,如READCOMMITTED适合大多数场景,REPEATABLE
-
MySQL数据归档主要有四种方式。1.使用SQL语句手动归档,通过INSERT和DELETE迁移历史数据,适合小规模场景但需注意事务控制、索引影响和备份确认;2.利用事件调度器实现定时自动归档,可设定周期任务并建议配合分区使用以减少性能影响;3.结合时间分区表进行归档,提升查询效率且操作整个分区更高效,但存在分区键设计限制;4.借助第三方工具如pt-archiver或mysqldump,前者支持边归档边删除并控制资源占用,后者适用于低频小规模归档。根据数据量和业务需求选择合适方法,小型项目可用SQL+事件
-
主键和唯一键在MySQL中均用于保证数据唯一性,但存在关键区别。主键必须唯一且非空,每个表仅能有一个主键,并自动创建聚集索引;而唯一键允许NULL值,一个表可有多个唯一键,通常创建非聚集索引。1.主键用于唯一标识记录,不能为空,适合使用自增整数或稳定无业务意义的字段;2.唯一键用于确保字段唯一性,允许空值,适用于用户名、邮箱等场景;3.主键影响数据存储结构,查询效率更高,而唯一键作为二级索引,查询需回表,性能略差。选择时应优先考虑主键的稳定性与简洁性,避免使用易变或复杂格式的字段。
-
确保Redis与MySQL数据一致性的方法是:1.写操作优先写入MySQL,然后异步更新Redis;2.读操作优先从Redis获取数据,若Redis无数据则从MySQL读取并更新Redis。这种方法通过消息队列实现异步更新,确保最终一致性,并提高读操作性能。
-
MySQL数据备份的关键方法包括:一、使用mysqldump进行逻辑备份,适合中小型数据库,可通过命令实现全量备份并结合压缩节省空间;二、物理备份通过直接复制数据文件实现,速度快但需停机或使用一致性机制;三、利用binlog实现增量备份,支持时间点恢复,建议定期归档日志以减少数据丢失风险;四、合理策略如每日全量+小时binlog归档、周全量+日增量+binlog、主从复制+定时备份等,同时必须定期验证备份可恢复性。
-
appendfsyncalways会让Redis卡在磁盘上,因其每条命令都强制调用fsync()等待硬件确认落盘,使QPS被钉死在磁盘IOPS天花板;而everysec通过后台线程批量刷盘解耦主线程与I/O,大幅降低IOPS压力但引入秒级延迟毛刺。
-
Redis Cluster 扩缩容时,业务抖动通常不是迁移命令本身造成的,而是迁移窗口、客户端重定向、热点槽位和失败收尾没有被单独核对。本文用一套可回滚的检查顺序说明如何安排迁移、观察状态并复查失败槽位。
-
Redis GETBIT 读取不存在的 key 或超出字符串范围的 offset 时会把未定义位置视为 0,因此返回 0 不等于命令失败。本文从参数语义、正常返回、错误分支和 Go 调用示例说明如何正确处理。
-
Redis 客户端缓存虽然能减少网络往返,但本地副本不会自动知道服务端数据已经改变。本文说明 tracking 如何按读取过的 key 发送失效通知,比较默认模式与广播模式,并给出断线、连接池和热点写入时的选择建议。
-
Redis RESP3 并不是把数组随机改成 map,而是协议版本决定了命令返回类型。本文用 HGETALL 说明 RESP2 与 RESP3 的原始差异、HELLO 协商方式、客户端解码边界以及不能依赖 map 顺序的兼容性注意事项。
-
Redis Stream 消费组中的 pending 消息不能直接从新的消费位置重读。本文用 XPENDING 判断空闲消息,再用 XAUTOCLAIM 按游标转移给恢复消费者,并说明 XACK、JUSTID、0-0 和已删除消息的处理边界。
-
用 MySQL 递归 CTE 展开邻接表目录,分别说明树形数据、多父节点和环路数据的去重策略,并通过路径、索引、深度和行宽控制批处理中的中间结果与额外分配。
-
Redis GEOSEARCH 的 COUNT ANY 会在找到足够数量后提前停止,返回项可能不是距离最近的成员。本文用实际查询场景说明 ASC、COUNT、ANY、WITHDIST 的结果契约和生产选择。
-
Redis XREADGROUP 的 NOACK 会让消息不进入 PEL,读取时按已确认处理。本文对比普通 XREADGROUP 加 XACK 与 NOACK 的 pending 语义,说明适用场景、可靠性边界和 XPENDING 检查方法。
-
影响数据库性能的常见因素如下:
(1)磁盘IO;
(2)网卡流量;
(3)服务器硬件;
(4)SQL查询速度。
下面介绍几个mysql 优化的工具,可以使用它们对MySQL进行检查,生成awr报告,从整体上