Interpretación del código fuente de rocksdb
TIDB versión 3.0 mejora significativamente la estabilidad de clústeres a gran escala, admite más de 150 nodos de almacenamiento y más de 300 TB de capacidad de almacenamiento, y puede funcionar de manera estable durante mucho tiempo. En términos de facilidad de uso, se han introducido una gran cantidad de optimizaciones para reducir los costos de operación y mantenimiento de los usuarios, incluida la introducción de varias vistas prácticas del sistema, EXPLAIN ANALYZE, SQL Trace, etc. en Information_Schema. En términos de rendimiento, especialmente el rendimiento OLTP, 3.0 también ha mejorado mucho en comparación con 2.1, con el rendimiento de TPC-C mejorado aproximadamente 4,5 veces y el rendimiento de Sysbench mejorado aproximadamente 1,5 veces. En lo que respecta a OLAP, TPC-H 50G Q15 se puede ejecutar debido a la visualización de la ejecución, y hasta ahora se han ejecutado normalmente 22 consultas de TPC-H. Las nuevas características incluyen funciones de ventana, vistas (experimentales), tablas de particiones, sistema de complementos y bloqueo pesimista (experimental).
Al momento de esta publicación, TiDB ha estado funcionando de manera estable en el entorno de producción de más de 500 usuarios durante mucho tiempo, cubriendo muchos campos como finanzas, seguros, manufactura, Internet, juegos, etc., que involucran transacciones. , centros de datos, bases de datos históricas, etc. escenario empresarial. La demanda de bases de datos relacionales en diferentes escenarios comerciales puede describirse como "cien flores florecen", pero las demandas más fundamentales de las bases de datos relacionales no han cambiado, como la confiabilidad de los datos, la estabilidad del sistema, la escalabilidad, la seguridad y la facilidad de uso. Siga nuestros pasos y resuelva las sorpresas de TiDB 3.0.
En comparación con la versión 2.1, la versión 3.0 ha mejorado significativamente la estabilidad de los clústeres a gran escala, admitiendo más de 150 nodos de almacenamiento en un solo clúster y más de 300 TB de capacidad de almacenamiento para un funcionamiento estable a largo plazo. Los principales puntos de optimización son los siguientes:
1. Optimice el mecanismo de latidos entre las réplicas de Raft, ajuste la frecuencia de los latidos de acuerdo con la actividad de la región y reduzca la carga de datos fríos en el clúster.
2. Esta estrategia de programación de puntos de acceso admite más configuraciones de parámetros y adopta prioridades más altas, lo que mejora la precisión de la programación de puntos de acceso.
3. Optimice el proceso de programación de PD, proporcione un mecanismo de limitación de corriente de programación y mejore la estabilidad del sistema.
4. Agregue la función de GC distribuida, mejore el rendimiento de GC, reduzca el tiempo de GC de clústeres grandes y mejore la estabilidad del sistema.
Como todos sabemos, la estabilidad de los planes de consulta de la base de datos es muy importante para el negocio. La versión 3.0 utiliza una variedad de métodos de optimización para mejorar la estabilidad del plan de consulta, de la siguiente manera:
1 Se agregó una función de análisis rápido para aumentar la velocidad de recopilación de información estadística, reducir el consumo de recursos del clúster y su impacto en la influencia empresarial.
2. Agregue la función de análisis incremental para aumentar la velocidad de recopilación de estadísticas de indicadores que aumentan monótonamente y reducir el consumo de recursos del clúster y su impacto en el negocio.
3. Agregue información estadística TopN a CM-Sketch para aliviar la gran cantidad de estimaciones causadas por conflictos de hash de CM-Sketch y mejorar la precisión de las estimaciones de costos y la estabilidad de los planes de consulta.
4. Introducir el marco de poda Skyline y utilizar reglas para evitar que los planes de consulta dependan demasiado de información estadística, mitigando así la situación en la que el plan de consulta seleccionado no es óptimo debido al retraso de la información estadística y mejorando. la estabilidad del plan de consulta.
5. Se agregó la función de administración del plan SQL, admite el enlace manual del plan de consulta cuando el plan de consulta es inexacto y mejora la estabilidad del plan de consulta.
1. Procesamiento de transacciones en línea
En comparación con la versión 2.1, la selección de puntos, el índice de actualización y la actualización sin índice de Sysbench se mejoraron aproximadamente 1,5 veces y el rendimiento de TPC-C es mayor. mejorado en aproximadamente 4,5 veces. Los principales puntos de optimización son los siguientes:
1. TiDB optimiza continuamente el ejecutor SQL, que incluye: optimizar la conversión de subconsulta inexistente a anti-semi-unión y optimizar la selección del orden de conexión al conectar múltiples. mesas.
2. Optimice la lógica de conexión de índice, amplíe los escenarios aplicables del operador de conexión de índice y mejore la precisión de la estimación de costos.
3. La función de mensajería por lotes de TiKV puede aumentar el TPS de escenarios de escritura intensiva en aproximadamente un 7 % y el TPS de escenarios de lectura intensiva en aproximadamente un 30 %.
4. TiKV optimiza la gestión de la memoria, reduce la asignación de memoria y las copias de las opciones de enlace de claves del iterador y mejora la tasa de aciertos de la caché mediante la optimización de la familia de varias columnas.
5. Introduzca el complemento del motor de almacenamiento Titan para mejorar el rendimiento cuando el valor supera 1 KB, aliviar el problema de amplificación de escritura de RocksDB y reducir el uso de E/S del disco.
6. TiKV agrega funciones Raftstore y Apply de subprocesos múltiples para mejorar la escalabilidad dentro de un solo nodo, mejorando así las capacidades de procesamiento concurrente y la utilización de recursos dentro de un solo nodo, reduciendo la latencia y mejorando en gran medida la escritura en el clúster. capacidad.
En comparación con principios de 2019, el rendimiento de TiDB Lightning se ha mejorado tres veces, de 100 GB/h a 300 GB/h, es decir, de 28 MB/s a 85 MB/s. Los puntos de optimización. son los siguientes:
1. Mejore el rendimiento de la conversión de pares SQL a KV y reduzca la sobrecarga innecesaria.
2. Mejore el rendimiento de la importación de una sola tabla y admita la importación por lotes.
3. Mejore el rendimiento de TiKV-Importer en la importación de datos y admita la importación de datos e índices por separado.
4.TiKV-Importer admite la función de límite de velocidad para cargar archivos SST.
RBAC (Control de acceso basado en roles) es una de las tecnologías de gestión de derechos más comunes en los sistemas comerciales. El "permiso de rol de usuario" más simple se puede construir a través de la idea de. Modelo de control de accesos RBAC. En RBAC, los usuarios están asociados con roles y los permisos están asociados con roles. La relación entre roles y permisos es generalmente de muchos a muchos. Los usuarios pueden obtener los permisos de ese rol convirtiéndose en un rol, simplificando así la gestión de permisos. Se desarrolla esta versión de la función RBAC iterativa.
Función de lista blanca de IP (función de versión empresarial): TiDB proporciona control de acceso de seguridad a la red basado en la lista blanca de IP, y los usuarios pueden configurar políticas de acceso relevantes de acuerdo con la situación real.
Función de registro de auditoría (función de versión empresarial): el registro de auditoría registra las operaciones realizadas por los usuarios en la base de datos. Al registrar registros de auditoría, los usuarios pueden realizar análisis de fallas, análisis de comportamiento, auditorías de seguridad, etc. Ayude a los usuarios a obtener la ejecución de datos en la base de datos.
Almacenamiento cifrado (función de versión empresarial): TiDB utiliza la función de cifrado propia de RocksDB para implementar el almacenamiento cifrado, lo que garantiza que todos los datos escritos en el disco estén cifrados, lo que reduce el riesgo de fuga de datos.
Mejore la verificación de permisos de las declaraciones de permiso y agregue verificaciones de permisos para las declaraciones ANALIZAR, USAR, CONFIGURAR GLOBAL y MOSTRAR LISTA DE PROCESOS.
1. Agregue una consulta SQL lenta para enriquecer el contenido del registro de consultas lentas de TiDB, como: número de tareas del coprocesador, tiempo de ejecución/espera promedio/más largo/90%, TiKV con la ejecución más larga. /dirección de tiempo de espera, simplificando la ubicación de consultas lentas, mejorando la eficiencia de la resolución de problemas de consultas lentas y mejorando la usabilidad del producto.
2. Incrementar la verificación de legalidad de los elementos de configuración del sistema, optimizar los elementos de monitoreo del sistema, etc. , mejorar la usabilidad del producto.
3. Agregue información estadística sobre el uso de memoria de los operadores TableReader, IndexReader e IndexLookupReader para mejorar la precisión de la consulta de estadísticas de uso de memoria y la eficiencia del procesamiento de declaraciones con gran consumo de memoria.
4. Formule especificaciones de registro, reconstruya el sistema de registro y unifique el formato de registro para facilitar que los usuarios comprendan el contenido del registro y facilite el análisis cuantitativo de los registros a través de herramientas.
5. Agregue funciones de explicación y análisis para mejorar la usabilidad del ajuste de SQL.
6. Agregue la función de seguimiento de sentencias SQL para facilitar la resolución de problemas.
7. Agregue unix_socket para conectarse a la base de datos.
8. Se agregó la función de recuperación rápida de tablas eliminadas, que puede restaurar rápidamente los datos cuando se eliminan accidentalmente.
TiDB 3.0 agrega el componente TiFlash para resolver análisis complejos y escenarios HTAP. TiFlash es un sistema de almacenamiento en columnas que se sincroniza en tiempo real con el sistema de almacenamiento en filas y tiene las características de baja latencia, alto rendimiento y lectura consistente con las transacciones.
Los datos de almacenamiento de filas sincronizados en tiempo real de TiKV se convierten a un formato de almacenamiento de columnas y se conservan en un grupo de nodos independientes a través del protocolo Raft, que resuelve los problemas del almacenamiento mixto de filas y columnas y del aislamiento de recursos. TiFlash se puede utilizar como un espejo en tiempo real del sistema de almacenamiento en filas (TiKV). El espejo en tiempo real puede ser independiente del sistema de almacenamiento en filas, aislar físicamente el almacenamiento en filas y en columnas y proporcionar una solución completa de aislamiento de recursos. la mejor solución recomendada para escenarios HTAP; también se puede utilizar como almacenamiento de filas. El índice de la tabla utiliza almacenamiento de filas para proporcionar servicios OLAP inteligentes y el rendimiento de consultas mixtas complejas se mejora aproximadamente 10 veces.
TiFlash se encuentra actualmente en la etapa Beta y está previsto que esté disponible antes del 31 de diciembre de 2019. Bienvenido a solicitar una prueba.
En el futuro, continuaremos invirtiendo en la estabilidad, la disponibilidad, el rendimiento y la expansión elástica del sistema para brindar a los usuarios la máxima flexibilidad, la mejor experiencia de rendimiento y la mejor experiencia de usuario.
En términos de estabilidad, V4.0 continuará mejorando las principales características no GA de V3.0, como el modelo de transacción pesimista, vistas, particiones de tablas, motor de almacenamiento de filas Titan y motor de almacenamiento de columnas TiFlash. introducir una copia de seguridad física aproximada La recuperación resuelve los problemas de recuperación y copia de seguridad de la base de datos distribuida, optimiza las funciones de programación de PD, etc.
En términos de rendimiento, la versión 4.0 continuará optimizando los procesos de transacción, reduciendo el consumo de recursos de transacción y mejorando el rendimiento, como: 1PC, omitiendo la operación de obtener ts enviados, etc.
En términos de expansión elástica, PD proporcionará la metainformación necesaria para la expansión elástica para llamadas al sistema externo. El sistema externo puede escalar dinámicamente el clúster en función de la metainformación y la carga para lograr ahorros de costos.
Creemos que la mejor arma para derrotar a lo "desconocido" es el poder de la comunidad, y el software básico debe seguir firmemente la ruta del código abierto. Al cierre de esta edición, hemos completado 41 artículos de lectura de fuentes. Hay 265 contribuyentes y 6 confirmadores en la comunidad de código abierto de TiDB. Aquí, nos gustaría expresar nuestra más sincera gratitud a los contribuyentes de la comunidad y esperamos que se unan más personas con ideas afines. También esperamos que todos puedan obtener algo de la comunidad de código abierto de TiDB.
Notas de la versión de TiDB 3.0 GA:/v3.0/releases/3.0-ga/