Importación de datos a DWS
Importación de datos de OBS en paralelo
- División de un archivo de datos en múltiples archivos
La importación de una gran cantidad de datos requiere mucho tiempo y consume muchos recursos de cómputo.
Para mejorar el rendimiento de la importación de datos desde OBS, divida un archivo de datos en múltiples archivos de la manera más uniforme posible antes de importarlo a OBS. La cantidad preferida de archivos divididos es un múltiplo entero de la cantidad de DN.
- Verificación de archivos de datos antes y después de una importación
Al importar datos desde OBS, primero importe sus archivos a su bucket de OBS y, a continuación, verifique que el bucket contenga todos los archivos correctos y solo esos archivos.
Una vez completada la importación, ejecute la sentencia SELECT para verificar que se hayan importado los archivos requeridos.
- Asegúrese de que no haya caracteres chinos en rutas utilizadas para importar datos a OBS o exportar datos desde OBS.
Uso de GDS para importar datos
- General Data Service (GDS) es una herramienta de línea de comandos que se ejecuta en servidores Linux. Coopera con el mecanismo de tabla externa para importar y exportar datos de manera eficiente. El paquete de herramientas GDS debe instalarse en el servidor donde se encuentra el archivo de origen de datos. Este servidor se denomina servidor de datos o servidor GDS. Para obtener más información sobre cómo usar GDS para importar datos, consulte Uso de GDS para importar datos de una tabla de un servidor remoto a un clúster de DWS.
- El sesgo de datos hace que el rendimiento de las consultas se deteriore. Antes de importar todos los datos de una tabla que contenga más de 10 millones de registros, se recomienda importar algunos de los datos y verificar si hay sesgo de datos y si es necesario cambiar las claves de distribución. Solucione el sesgo de datos si detecta alguno. Es costoso abordar el sesgo de datos y cambiar las claves de distribución después de importar una gran cantidad de datos. Para obtener más información, consulte Verificación del sesgo de datos.
- Para acelerar la importación, se recomienda dividir los archivos y utilizar las herramientas GDS para importar datos en paralelo. Una tarea de importación se puede dividir en varias tareas de importación simultáneas. Si varias tareas de importación utilizan el mismo GDS, puede especificar el parámetro -t para habilitar la importación simultánea de múltiples subprocesos de GDS. Para evitar cuellos de botella físicos de E/S y de red, se recomienda montar los GDS en diferentes discos físicos y las NIC.
- Si la E/S de GDS y las NIC no alcanzan sus cuellos de botella físicos, puede habilitar SMP en DWS para acelerar. SMP multiplicará la presión sobre los GDS. Tenga en cuenta que la adaptación de SMP se implementa en función de la presión de la CPU de DWS en lugar de la presión de GDS. Para obtener más información sobre SMP, consulte Ejecución paralela de SMP.
- Para una comunicación adecuada entre los GDS y DWS, se recomienda utilizar redes de 10GE. Las redes de 1GE no pueden soportar la transmisión de datos de alta velocidad y no pueden garantizar una comunicación adecuada entre los GDS y DWS. Para maximizar la velocidad de importación de un solo archivo, asegúrese de que se utilice una red de 10GE y que la velocidad de E/S del grupo de discos de datos sea superior al límite superior de la capacidad de procesamiento de un solo núcleo de GDS (aproximadamente 400 MB/s).
- De manera similar a la importación de una sola tabla, asegúrese de que la tasa de E/S sea mayor que el rendimiento máximo de la red en la importación concurrente
- Se recomienda que la relación entre la cantidad de GDS y la cantidad de DN esté en el rango de 1:3 a 1:6.
- Para mejorar la eficiencia de la importación de datos por lotes en tablas particionadas de almacenamiento por columnas, los datos se almacenan en un búfer antes de ser escritos en un disco. Puede especificar el número de búferes y el tamaño del búfer estableciendo partition_mem_batch y partition_max_cache_size, respectivamente. Los valores más pequeños indican que la importación por lotes a tablas particionadas de almacenamiento por columnas es más lenta. Cuanto mayores sean los valores, mayor será el consumo de memoria.
Uso de INSERT para insertar varias filas
Si no se puede utilizar la sentencia COPY durante la importación de datos, puede utilizar inserciones de varias filas para insertar datos por lotes. Las inserciones de varias filas mejoran el rendimiento al agrupar una serie de inserciones.
El siguiente ejemplo inserta tres filas en una tabla de tres columnas mediante una única sentencia INSERT. Esta sigue siendo una inserción pequeña, que se muestra simplemente para ilustrar la sintaxis de una inserción de varias filas.
Para insertar varias filas de datos en la tabla customer_t1, ejecute la siguiente sentencia:
1 2 3 4 | INSERT INTO customer_t1 VALUES (6885, 'maps', 'Joes'), (4321, 'tpcds', 'Lily'), (9527, 'world', 'James'); |
Para obtener más detalles y ejemplos, consulte INSERT.
Uso de la sentencia COPY para importar datos
La sentencia COPY importa datos de bases de datos locales y remotas en paralelo. COPY importa grandes cantidades de datos de manera más eficiente que las sentencias INSERT.
Para obtener información sobre cómo usar el comando COPY, consulte Ejecución de la sentencia COPY FROM STDIN para importar datos.
Uso de un comando meta gsql para importar datos
El comando \copy se puede utilizar para importar datos después de iniciar sesión en una base de datos a través de cualquier cliente gsql. En comparación con el comando COPY, el comando \copy lee o escribe directamente archivos locales en lugar de leer o escribir archivos en el servidor de base de datos.
Los datos leídos o escritos con el comando \copy se transfieren a través de la conexión entre el servidor y el cliente y pueden no ser tan eficientes como el comando SQL COPY. Se recomienda la sentencia COPY cuando la cantidad de datos es grande.
Para obtener información sobre cómo usar el comando \copy, consulte Uso de un metacomando de gsql para importar datos.
\copy solo se aplica a la importación de datos por lotes pequeños con formatos uniformes, pero con una capacidad de tolerancia a errores deficiente. Se prefiere GDS o COPY para la importación de datos.