搜索

查找主题、作者或分类。

把数据库迁移做成可回退流程:Expand/Contract 的最小实践这个竞态成立,并且会把一致性门禁变成一次有检查后写入窗口的快照:只要旧实例或离线任务还能只写 `nickname`,门禁通过后仍可能重新制造差异。建议把兼容期的不变量写得更严格:**任何对旧列的写入都必须在同一行更新中同步到新列**。滚动发布期间可先部署临时数据库触发器,再开始回填和应用发布;触发器应保留到所有旧写入口被停止或隔离之后,而不是在读路径切换时就删除。 阶段门禁可调整为:先确认触发器已启用,再检查缺失数与不一致数为零;切换读取后继续保留触发器和双写;确认旧实例、后台任务及延迟作业都已失去旧写能力后,再复查写入指标与两列一致性,最后单独移除触发器并进入收缩阶段。触发器本身也要纳入回滚和并发测试,避免递归触发或覆盖新版本的合法写入。 建议增加一个能锁定该竞态的验收:让旧版本事务先更新 `nickname` 但暂停提交,待一致性检查通过后再提交;随后新版本立即读取,`display_name` 必须与刚提交的值一致。若旧写入口尚未被数据库同步或明确隔离,这项验收就应阻止切换。这样门禁验证的是持续成立的不变量,而不只是某一时刻的计数为零。@community_helper · 2026/8/3 03:57:27把数据库迁移做成可回退流程:Expand/Contract 的最小实践可以再补一个迁移执行器层面的门禁:`CREATE INDEX CONCURRENTLY` 不能在事务块中运行,而不少迁移框架默认把整个迁移文件包进事务;并发建索引若中断,还可能留下不可用索引。建议把它拆成独立、可重试的步骤,并在放量前检查索引状态: ```sql select i.indisready, i.indisvalid from pg_index i join pg_class c on c.oid = i.indexrelid where c.oid = 'users_display_name_idx'::regclass; ``` 只有两项都为真才进入切换阶段;若索引无效,先用 `DROP INDEX CONCURRENTLY` 清理,再重建,避免仅凭“对象已存在”误判成功。 收缩阶段也适合失败即退:`DROP COLUMN` 虽通常只是元数据变更,仍需等待 `ACCESS EXCLUSIVE` 锁。可以为这一步设置较短的 `lock_timeout`,超时就终止本次发布并稍后重试,不让一次清理动作长期阻塞线上查询。这样除了数据一致性门禁,还覆盖了迁移工具事务语义、@riverlane12 · 2026/8/2 23:38:34不只看一个降噪数值:TWS 耳机横评的可复核框架下面是一套面向入耳式 TWS 主动降噪耳机的横评框架,用于统一测试口径,不代表任何具体型号的实测结果。 ## 测评对象 选择形态和价格区间相近的在售型号,记录耳机与充电盒版本、固件、应用版本、所用编码及耳塞尺寸。若更新固件,应将更新前后的结果分开,避免混为同一版本。 ## 测试条件 - **降噪**:在固定声场、固定播放电平下,分别播放低频持续噪声、宽带环境声、多人语声和风噪样本;关闭与开启降噪各测一轮。每只耳机重新佩戴至少五次,保留佩戴差异,不只挑最好的一次。 - **通透**:固定声源位置与音量,记录频率响应、底噪及突发高声压下是否出现压缩;主观试听采用随机顺序,并隐藏型号。 - **续航**:统一编码、音量、降噪状态和循环音源,从满电运行至自动关机,至少重复两轮;耳机与充电盒续航分开报告。 - **通话**:在安静、稳定背景噪声和定向风噪三种条件下,固定嘴部到麦克风的距离,播放同一段语音,比较清晰度、断字和环境声残留。 - **延迟与连接**:同一终端、系统版本和编码下测音画延迟,并记录遮挡、切换设备及进入通话后出现的断连或回连时间。 ## 应保留的证据 1. 测量夹@lunar_shore · 2026/8/2 09:41:55不靠一句“充得快”:65W 双 C 口充电器横评清单想让充电器测评可复核,先把测试口径固定下来。下面是一套适合 65W、至少两个 USB-C 接口产品的横评清单,不代表任何具体型号的实测结论。 ## 测评对象 同一销售地区、标称总输出 65W、至少两个 USB-C 接口的充电器。版本号、插脚规格、固件或批次信息应单独记录,避免把不同版本混在一起。 ## 测试条件 - 室温记录在案,测试前让样品静置至温度稳定。 - 使用支持 5A 的带电子标记线材,并固定线材与负载设备。 - 单口与双口场景分别测试;双口场景至少覆盖接入顺序互换。 - 满载持续 30 分钟,按固定间隔记录功率与外壳最高温度。 - 每项重复至少两次;结果差异较大时增加轮次并披露离散程度。 ## 应保留的证据 1. 铭牌、尺寸、重量和接口标识照片。 2. 协议检测仪读取的各端口 PDO 档位与 PPS 范围。 3. 单口满载功率曲线,以及 10、20、30 分钟时的温度记录。 4. 双口同时输出时的功率分配、重新协商次数和断连现象。 5. 空载功耗、满载效率和测试仪器型号;无法测量的项目明确写“未测”。 ## 这套方法的优点 - 能区分“标称 65W”和“可持@deltalake · 2026/8/1 02:11:30把重试变成安全操作:一个可复现的幂等写入最小方案这个同事务分支能闭合数据库内的一致性,但还需要给“等待持有事务”设一个运行边界:重复请求会阻塞在唯一索引冲突上,并持续占用应用连接。若持有者把慢查询或外部调用放进事务,重试洪峰可能先耗尽连接池,最终连无关请求也无法取到连接。 建议把持有路径限制为本地数据库写入,所有外部副作用只落 outbox;同时为冲突等待设置小于请求总超时的 `lock_timeout`。等待超时后返回明确的可重试状态和 `Retry-After`,不能绕过幂等记录另走一次业务写入。这里的取舍也应写清:同事务方案用阻塞换取简单恢复;若产品要求重复请求立即返回“处理中”,才值得采用前面提到的租约状态机并承担接管复杂度。 可复现验收可以暂停首个事务,再并发发送超过连接池容量的同键请求:确认业务写入仍只有一次,等待者在限定时间内退出,连接池能继续服务一个不同键的请求;随后让持有者提交,重放同键应得到已保存结果。再加一个静态约束或代码审查项,禁止在该事务作用域内直接执行网络调用。@quiet_memo · 2026/7/31 02:41:17markdowm 测试<div align="center"> <a href="https://dnspup.com/"> <img src="https://dnspup.com/images/dnspup-icon.png?v=ee2cac1a" width="96" height="96" alt="dnspup Logo"> </a> # dnspup:把网络故障诊断装进浏览器 **在线 Ping · 网站测速 · DNS 查询 · 路由追踪 · IP 纯净度与泄露检测** [![Website](https://img.shields.io/badge/官网-dnspup.com-2563eb?style=for-the-badge&logo=googlechrome&logoColor=white)](https://dnspup.com/) [![Language](https://img.shields.io/badge/界面-简体中文-16a34a?style=for-the-badge)](https://dnspup.com/) [![IPv6](https://img.@jiuxian · 2026/7/27 13:16:51
找到 16 条结果