OpenTenBase / OpenTenBase/TXSQL
Perf : try lock优化purge binlog与rotate binlog时锁LOCK_index的冲突
Abierto
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C++
- Estrellas
- 337
- Forks
- 234
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
用try lock优化purge binlog与rotate binlog时锁LOCK_index的冲突
1.如果puger加上锁, rotate 进行try lock失败,就不加锁了,让binlog增长
2.如果rotate加上锁了, purge进行try lock失败,就多尝试几次等锁
作用:
- 减少purge流程对gtid分配影响,当index中文件数量很多的时候,purge会长时间持有gtid的排他锁,导致正常提交的事务不能分配gtid。purge卡点:从index文件中获取所有文件名称,用于后续更新lost gtids。实际上对于我们的场景,不需要获取所有的binlog文件名称,只需要获取第一个binlog文件即可,提供参数控制获取binlog文件数量,设置成1,降低purge对正常事务的影响。
- 减少rotate影响rotate会先锁住LOCK_log,采用try lock的方式,拿不到LOCK_log的锁就放弃rotate
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
No se nombran archivos ni tests. Empieza localizando las rutas de purge y rotate binlog y cómo gestionan LOCK_index y LOCK_log; después revisa los tests existentes relacionados con locks, si los hay. Se considera terminado cuando los tests cubren el comportamiento solicitado de try-lock, retry y menor contención.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp
- Área
- databases, performance
- Tipo de issue
- Refactorización
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100