¿Alguna vez te has encontrado en una situación en la que necesitabas una gran cantidad de datos ficticios para realizar pruebas, pero no querías pasar horas escribiendo scripts o insertando registros manualmente? ¿O tal vez ha sentido curiosidad por saber cómo aprovechar las nuevas funciones de MySQL 8.0 para optimizar las tareas de su base de datos? Bueno, ¡te espera un placer! En esta publicación, exploraremos cómo usar expresiones de tabla comunes (CTE) para generar e insertar sin esfuerzo grandes cantidades de datos ficticios en su base de datos MySQL.
Imagínese la necesidad de completar una tabla con un millón de valores hash para pruebas de carga o evaluaciones comparativas de rendimiento. Suena como una pesadilla, ¿verdad? ¡Ya no! Con la llegada de CTE en MySQL 8.0, puedes lograr esto en cuestión de segundos. Analicemos cómo funciona esto y cómo puede utilizar esta potente función para simplificar sus necesidades de generación de datos.
Las expresiones de tabla comunes (CTE), una nueva característica agregada en MySQL 8.0, se pueden usar para ingresar fácilmente una gran cantidad de datos ficticios simples. Por ejemplo, si desea ingresar 1 millón de datos ficticios en una tabla llamada hashes que almacena valores hash, puede lograrlo con los siguientes pasos:
Primero, crea la tabla:
CREATE TABLE hashes ( id INT PRIMARY KEY AUTO_INCREMENT, hash CHAR(64) );
Establezca la variable de sesión para permitir una mayor profundidad de recursividad:
SET SESSION cte_max_recursion_depth = 1000000;
Luego, ejecuta el CTE para insertar 1 millón de filas:
INSERT INTO hashes(hash) WITH RECURSIVE cte (n) AS ( SELECT 1 UNION ALL SELECT n 1 FROM cte WHERE nEste método aprovecha una expresión de tabla común recursiva para generar datos ficticios.
Comprender las CTE
Una expresión de tabla común (CTE) es un conjunto de resultados temporales con nombre al que se puede hacer referencia dentro de una sola declaración varias veces. Los CTE son particularmente útiles para simplificar consultas complejas y mejorar la legibilidad.
Desglose de sintaxis
Establecer la profundidad de la recursividad
SET SESSION cte_max_recursion_depth = 1000000;La variable de sistema cte_max_recursion_ Depth establece el límite superior de recursividad. De forma predeterminada, es 1000, por lo que para repetir más, debes ajustarlo. Aquí lo configuramos en 1 millón.
La consulta CTE
INSERT INTO hashes(hash) WITH RECURSIVE cte (n) AS ( SELECT 1 UNION ALL SELECT n 1 FROM cte WHERE nDesglosemos esta consulta:
CON cte RECURSIVO (n): Esto inicia la definición de CTE. cte es el nombre del conjunto de resultados temporal y n es la columna.
SELECT 1: Esta es la parte no recursiva del CTE, que sirve como punto de partida (valor inicial).
UNION ALL SELECT n 1 FROM cte WHERE n
SELECT SHA2(n, 256) FROM cte: esta parte final de la consulta selecciona el hash SHA-256 de cada valor n, generando los datos ficticios para su inserción.
El CTE genera recursivamente números del 1 al 1.000.000. Para cada número, calcula el hash SHA-256 y lo inserta en la tabla de hashes. Este enfoque es eficiente y aprovecha las capacidades recursivas de MySQL para manejar grandes volúmenes de datos sin problemas.
Para comprender el impacto de esta característica, utilicé un espacio de trabajo de Gitpod Enterprise, aprovechando el entorno poderoso y efímero para evitar la molestia de configuraciones e instalaciones. Aquí hay un vistazo a la configuración:
Para 1 millón de filas, el tiempo de ejecución de la consulta es de aproximadamente 4,46 segundos:
mysql> INSERT INTO hashes(hash) -> WITH RECURSIVE cte (n) AS -> ( -> SELECT 1 -> UNION ALL -> SELECT n 1 FROM cte WHERE n ) -> SELECT SHA2(n, 256) FROM cte; Query OK, 1000000 rows affected (4.43 sec) Records: 1000000 Duplicates: 0 Warnings: 0
Número de filas | Tiempo de ejecución |
---|---|
1000 | 0,03 seg |
10,000 | 0,07 seg |
100.000 | 0,42 seg |
1.000.000 | 4,43 seg |
10.000.000 | 48,53 seg |
El uso de CTE en MySQL 8.0 cambia las reglas del juego para generar grandes cantidades de datos ficticios rápidamente. Es especialmente útil para pruebas de carga y evaluaciones comparativas de rendimiento. Con solo unas pocas líneas de código, puedes completar tus tablas sin esfuerzo y luego volver a las otras partes importantes de tu proyecto.
No dude en probar diferentes estrategias de generación de datos y profundidades de recursividad para ver cuál funciona mejor para usted. Para obtener más consejos e información sobre seguridad y análisis de registros, sígueme en Twitter @Siddhant_K_code y mantente actualizado con el contenido tecnológico más reciente y detallado como este. ¡Feliz codificación!
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3