SAP HANA. Tablas con tipo de almacenamiento Fila

Buenas tardes compañeros. En este artículo, me gustaría tocar el tema de las tablas de filas. Para muchos administradores de bases de datos, este tipo de tabla ha sido durante mucho tiempo el tipo más natural, por así decirlo, el predeterminado. Las tablas del tipo COLUMN se encontraban principalmente en data warehouse, es decir, bases de datos con una carga predominante del tipo OLAP.





La idea principal de los ingenieros de SAP al desarrollar la base de datos HANA fue unir los dos mundos de las aplicaciones OLTP y OLAP. Como resultado, las tablas con almacenamiento en columnas en la base de datos de HANA se han convertido en las tablas predeterminadas, pero a pesar de las ventajas de las tablas en columnas en una gran cantidad de escenarios, la base de datos de HANA continúa usando tablas de cadenas. Las características del uso de este tipo de tablas se discutirán en este artículo.





Las tablas de filas se almacenan en un área especial de memoria llamada memoria compartida. Cuando se inicia la base de datos, esta área se carga completamente en la memoria y permanece allí mientras la base de datos esté operativa.





En las tablas de filas, todos los datos se colocan en filas una tras otra, lo que facilita el acceso a todas las filas de la tabla. Pero con el acceso a todos los valores de las columnas, es un poco más difícil, ya que estos valores no se pueden transferir de la memoria principal a la CPU con la misma eficiencia que en el caso del almacenamiento por columnas. La compresión de datos con este tipo de almacenamiento también es menos eficiente.





El enfoque clásico para las bases de datos relacionales, donde los datos se almacenan en formato tabular, es un almacenamiento que se asemeja a la estructura lógica de una tabla. Cada registro se almacena como un fragmento concatenado de los valores de cada columna de la tabla. A continuación se muestra una tabla con el tipo de almacenamiento clásico.





Ejemplo de mesa con almacenaje clásico
Ejemplo de mesa con almacenaje clásico

, , . DBA.





Vista de tabla de almacenamiento de filas en la memoria
Row-store

, , . . CPU ,  where  .





Un ejemplo de escaneo de filas en tablas con tipos de almacenamiento de filas y columnas
Row Column store

(main memory) CPU, , , . , , , ( ) .





HANA, Row-store :













  • , .









  • ,





  • , .





row-store , : b-tree cpb+-tree ( b-tree) – . , , . SAP HANA cpb+-tree string, binary string, decimal. , b-tree . row-store , ( ).





(Multiversion Concurrency Control)

Multiversion Concurrency Control (MVCC) , . , . MVCC . , .





-.





row store , , commit. , undo. M_UNDO_CLEANUP_FILES -.





Garbage Collector. commit, ( ). , ( commit rollback). , ( commit), , (main memory), . , 8 . .





( M_SERVICE_THREADS), Thread Type “MVCCGarbageCollector”. , , , , THREAD_TYPE=’SqlExecutor’ THREAD_METHOD=’CommitTrans’.





Row-store

Row-store . , HANA 1.0, . , .





Row store 64 . . row-store , . , .





. row store . , . SAP Row Store , 10Gb 30%. HANA ONLINE OFFLINE.





ONLINE HANA 1.0 SPS8. Row store. SAP HANA 2.0 SPS3 , , , , . SAP HANA 2.0 SPS4 , , . SAP online , . , , OFFLINE .





HANA 2.0 SPS4, SAP OFFLINE , . OFFLINE , . 247 row-store . , , OFFLINE , .





! OFFLINE HANA.





SAP HANA 2.0 SPS4 ONLINE . row store. 60% row-store, . , . 2789255 - Automatic Online Row Store Reorganization.





Con esto concluye mi breve descripción general de las tablas con el tipo de almacenamiento Fila. A pesar de las ventajas de las tablas de columnas, las tablas de cadenas se siguen utilizando en la base de datos de HANA. Básicamente, estas tablas se utilizan como tablas técnicas o de configuración con un número relativamente pequeño de registros, mientras que la función principal se asigna a las tablas con un tipo de almacenamiento en columnas.








All Articles