Importante proyecto nacional de lenguaje Go: TiDB 3.0 GA, la estabilidad y el rendimiento se han mejorado enormemente
TiDB es una base de datos relacional distribuida de código abierto desarrollada independientemente por PingCAP. Tiene la confiabilidad, disponibilidad, seguridad y otras características de los datos de las bases de datos de nivel comercial. Admite la expansión horizontal elástica en línea y es compatible con MySQL. protocolo y ecología, y es innovador Realizar la integración de OLTP y OLAP.
La versión 3.0 de TiDB ha mejorado significativamente la estabilidad de los clústeres a gran escala. El clúster admite 150 nodos de almacenamiento y una capacidad de almacenamiento de 300 TB para un funcionamiento estable a largo plazo. En términos de facilidad de uso, se han introducido una gran cantidad de optimizaciones para reducir los costos de operación y mantenimiento del usuario, incluida la introducción de múltiples vistas prácticas del sistema en Information_Schema, EXPLAIN ANALYZE, SQL Trace, etc. En términos de rendimiento, especialmente el rendimiento de OLTP, 3.0 también ha mejorado significativamente en comparación con 2.1. El rendimiento de TPC-C se ha mejorado aproximadamente 4,5 veces y el rendimiento de Sysbench se ha mejorado aproximadamente 1,5 veces. , TPC-H 50G Q15 se puede ejecutar debido a la implementación de View. Hasta ahora, las consultas TPC -H 22 se pueden ejecutar normalmente. Las nuevas características incluyen funciones de ventana, vistas (características experimentales), tablas de particiones, sistemas de complementos y bloqueos pesimistas (características experimentales).
Al momento de la publicación de este artículo, TiDB ha estado funcionando de manera estable en el entorno de producción de 500 usuarios durante mucho tiempo, cubriendo finanzas, seguros, manufactura, Internet, juegos y otros campos, que involucran múltiples negocios como transacciones, escritorios intermedios de datos y bibliotecas históricas. Las demandas de bases de datos relacionales en diferentes escenarios comerciales pueden describirse como "cien flores florecen", pero las demandas más fundamentales de las bases de datos relacionales no han cambiado en absoluto, como la confiabilidad de los datos, la estabilidad del sistema, la escalabilidad, la seguridad, la facilidad de uso, etc. Siga nuestros pasos para descubrir qué sorpresas tiene TiDB 3.0.
En comparación con la versión 2.1, la 3.0 ha mejorado significativamente la estabilidad de los clústeres a gran escala, admitiendo 150 nodos de almacenamiento en un solo clúster y una capacidad de almacenamiento de 300 TB para un funcionamiento estable a largo plazo. Los principales puntos de optimización son los siguientes. sigue:
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. La estrategia de programación de puntos de acceso admite más configuraciones de parámetros, adopta prioridades más altas y 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. Se agregó una nueva función de GC distribuida para mejorar el rendimiento de GC, reducir el tiempo de GC de clústeres grandes y mejorar la estabilidad del sistema.
Como todos sabemos, la estabilidad de los planes de consulta de la base de datos es crucial para los negocios. TiDB 3.0 utiliza una variedad de métodos de optimización para mejorar la estabilidad de los planes de consulta, de la siguiente manera:
1. La función Fast Analyse agregada mejora la velocidad de recopilación de información estadística y reduce el consumo de recursos del clúster y el impacto en el negocio.
2. Se agregó la función Análisis incremental para mejorar la velocidad de recopilación de estadísticas de índice que aumentan monótonamente y reducir el consumo de recursos del clúster y el impacto en el negocio.
3. Agregue información estadística TopN en CM-Sketch para aliviar la sobreestimación causada por el conflicto de hash de CM-Sketch, mejorar la precisión de la estimación de costos y mejorar la estabilidad de los planes de consulta.
4. Introduzca el marco Skyline Pruning, utilice reglas para evitar que los planes de consulta dependan demasiado de información estadística, alivie la situación en la que el plan de consulta seleccionado no es óptimo debido a información estadística retrasada y mejore la estabilidad de el plan de consulta.
5. Se agregó la función de administración de planes SQL, que admite el enlace manual de planes de consulta cuando el plan de consulta es inexacto, lo que mejora la estabilidad del plan de consulta.
1. OLTP
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 se mejoró en aproximadamente 4,5 veces. Los principales puntos de optimización son los siguientes:
1. TiDB continúa optimizando el ejecutor SQL, incluyendo: optimizar la subconsulta NO EXISTE en Anti Semi Join, optimizar la selección del orden de unión al unir varias tablas, etc.
2. Optimice la lógica de Index Join, amplíe los escenarios aplicables del operador Index Join y mejore la precisión de la estimación de costos.
3. La función de envío y recepción de mensajes por lotes de TiKV mejora el TPS de escenarios de escritura intensiva en aproximadamente 7 y el TPS de escenarios de lectura intensiva en aproximadamente 30.
4. TiKV optimiza la gestión de la memoria, reduce la asignación de memoria y la copia de la opción de enlace de clave del iterador, varias familias de columnas comparten el caché de bloques, mejora la tasa de aciertos del caché y otros medios para mejorar en gran medida el rendimiento.
5. Introduzca el complemento del motor de almacenamiento Titan para mejorar el rendimiento cuando el valor del Valor supere 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 de un solo nodo, mejorando así las capacidades de procesamiento concurrente de un solo nodo y la utilización de recursos, reduciendo la latencia y mejorando en gran medida las capacidades de escritura del clúster.
En comparación con principios de 2019, el rendimiento de TiDB Lightning se ha multiplicado por 3, 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 SQL en pares KV y reduzca la sobrecarga innecesaria.
2. Mejore el rendimiento de la importación de una sola tabla; la tabla única admite la importación por lotes.
3. Mejore el rendimiento de importación de datos de TiKV-Importer 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 administración de permisos 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 RBAC. Modelo de control de acceso. En RBAC, los usuarios están asociados con roles y los permisos están asociados con roles. Generalmente existe una relación de muchos a muchos entre roles y permisos. Los usuarios obtienen los permisos que pertenecen al rol en función del rol en el que se convierten, para simplificar. gestión de permisos. A través de esta versión El desarrollo iterativo de la función RBAC está completo.
Función de lista blanca de IP (función Enterprise Edition): 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 las condiciones reales.
Función de registro de auditoría (función Enterprise Edition): el registro de auditoría registra las operaciones realizadas por los usuarios en la base de datos. Al registrar el registro de auditoría, los usuarios pueden realizar análisis de fallas, análisis de comportamiento, auditorías de seguridad, etc. en la base de datos. para ayudar a los usuarios a obtener datos.
Almacenamiento cifrado (función de versión empresarial): TiDB utiliza la función de cifrado propia de RocksDB para implementar la función de 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 las verificaciones de permisos de las declaraciones ANALIZAR, USAR, ESTABLECER GLOBAL, MOSTRAR LISTA DE PROCESOS.
1. Se agregó un método SQL para consultar consultas lentas, enriqueciendo el contenido del registro de consultas lentas de TiDB, como: número de tareas del coprocesador, tiempo de ejecución/espera promedio/máximo/90, dirección TiKV con la ejecución más larga /tiempo de espera, simplificando el trabajo de posicionamiento de consultas lentas, mejorando la eficiencia de la resolución de problemas de consultas lentas y mejorando la facilidad de uso del producto.
2. Se agregó una nueva verificación de legalidad de los elementos de configuración del sistema, elementos optimizados de monitoreo del sistema, etc. para mejorar la usabilidad del producto.
3. Se agregaron estadísticas de uso de memoria para los operadores TableReader, IndexReader e IndexLookupReader para mejorar la precisión de las estadísticas de uso de memoria de consulta y mejorar la eficiencia del procesamiento de declaraciones con gran consumo de memoria.
4. Desarrollar especificaciones de registro, reconstruir el sistema de registro y unificar el formato de registro para facilitar que los usuarios comprendan el contenido del registro y facilitar el análisis cuantitativo de los registros a través de herramientas.
5. Se agregó la función EXPLICAR ANALIZAR para mejorar la facilidad de uso del ajuste SQL.
6. Se agregó la función de seguimiento de declaraciones SQL para facilitar la resolución de problemas.
7. Se agregó la capacidad de conectarse a la base de datos a través de unix_socket.
8. Se agregó la función de recuperación rápida de tablas eliminadas, que se puede usar para restaurar datos rápidamente cuando se eliminan accidentalmente.
TiDB 3.0 añade el componente TiFlash para resolver análisis complejos y escenarios HTAP. TiFlash es un sistema de almacenamiento en columnas que se sincroniza con el sistema de almacenamiento en filas en tiempo real y tiene características como baja latencia, alto rendimiento y lectura consistente con las transacciones. El protocolo Raft se utiliza para sincronizar datos almacenados de TiKV en tiempo real y convertirlos a formato de almacenamiento de columnas y conservarlos en un grupo de nodos independientes, resolviendo los problemas de almacenamiento mixto de filas y columnas y 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, aislando físicamente el almacenamiento en filas y en columnas, y proporcionando una solución completa de aislamiento de recursos. la solución óptima recomendada para escenarios HTAP también se puede utilizar Sirve como índice para tablas de almacenamiento de filas y coopera con el almacenamiento de filas para proporcionar servicios OLAP inteligentes al mundo exterior, mejorando el rendimiento de consultas mixtas complejas aproximadamente 10 veces.
TiFlash se encuentra actualmente en la etapa Beta y está programado para estar disponible antes del 31 de diciembre de 2019. Todos pueden solicitar la prueba.
En el futuro, continuaremos invirtiendo en la estabilidad del sistema, la facilidad de uso, el rendimiento y la expansión elástica para brindar a los usuarios la máxima capacidad de escalamiento elástico, la mejor experiencia de rendimiento y la mejor experiencia de usuario.
En términos de estabilidad, V4.0 continuará mejorando las características principales de V3.0 antes de GA, como: modelo de transacción pesimista, vista, partición de tabla, motor de almacenamiento de filas Titan, motor de almacenamiento de columnas TiFlash. introducir copia de seguridad y recuperación física aproximada para resolver el problema de la copia de seguridad y recuperación de bases de datos distribuidas, optimizar la función de programación de PD, etc.
En términos de rendimiento, la versión V4.0 continuará optimizando el proceso de procesamiento de transacciones, reduciendo el consumo de recursos de transacciones y mejorando el rendimiento, por ejemplo: 1PC, eliminando la necesidad de obtener operaciones de confirmación, 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 tamaño del clúster de acuerdo con la metainformación y las condiciones de carga para lograr la metainformación. objetivo de ahorrar costes.
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 código fuente. La comunidad de código abierto de TiDB tiene un total de 265 contribuyentes y 6 confirmadores. Nos gustaría expresar nuestro más sincero agradecimiento a los contribuyentes de la comunidad y esperamos que puedan unirse más personas con ideas afines. También esperamos que todos puedan obtener algo del TiDB abierto. comunidad de origen.
Notas de la versión de TiDB 3.0 GA: /v3.0/releases/3.0-ga/