答:先定位经常慢或总成本高的语句,区分锁等待、执行与取数,再检查计划、索引和返回量。慢日志只是入口,不包含全部应用侧排队和网络处理。
答:事务相互持有对方需要的锁形成环,就是死锁。启用检测时,InnoDB 可发现等待环并选择牺牲者回滚;应用仍需正确处理失败并按条件重试整个事务。
答:源端记录可复制变化,副本接收并写入中继日志,再由应用线程或工作线程重放。旧资料中的 master/slave 对应这里的 source/replica。
答:redo 用于重放需要恢复的页修改,undo 支持回滚和旧版本读取。崩溃恢复不只是把已提交 SQL 再执行一次,而是结合日志状态恢复数据并处理未完成事务。
答:不是物理上不能写。副本需要应用复制变化,某些账号或配置也可能允许直接写;生产通常通过 read_only、super_read_only 和权限限制业务误写,具体例外按产品规则确认。
答:副本可承接允许延迟的读取、承担部分备份或分析工作,并作为可用性方案的一部分。它们不需要都接受业务写入才有价值,但也不是越多越能无限扩展。
答:写入与需要最新结果的读取连接正确可写源端,允许复制延迟的读取可走副本。可以通过受控数据源路由或代理实现,但事务范围与连接取得时机必须明确。
答:MariaDB 起源于 MySQL 分支,已经独立演进。协议有兼容部分,但 GTID、复制、优化器、JSON、认证和排序规则等可能不同,不能把当前版本当成完全互换的同一产品。
答:CHAR 用于固定字符长度的值,VARCHAR 按实际长度存放并附带长度信息。选型主要看值的长度分布和尾空格语义,实际占用还受字符集和 InnoDB 行格式影响。
答:最多 50 个字符。VARCHAR 的声明长度按字符计算,常见汉字在 UTF-8 中占三个字节,部分扩展汉字占四个字节。行大小、索引长度和实际字符集仍会限制设计。