Bon après-midi, chers collègues. Dans cet article, je voudrais aborder le sujet des tables de lignes. Pour de nombreux administrateurs de bases de données, ce type de table a longtemps été le type le plus naturel, pour ainsi dire, le type par défaut. Les tables de type COLUMN se trouvaient principalement dans des entrepôts de données, c'est-à-dire des bases de données à charge prédominante de type OLAP.
L'idée principale des ingénieurs SAP lors du développement de la base de données HANA était d'unir les deux mondes des applications OLTP et OLAP. En conséquence, les tables avec stockage en colonnes dans la base de données HANA sont devenues les tables par défaut, mais malgré les avantages des tables en colonnes dans un grand nombre de scénarios, la base de données HANA continue d'utiliser des tables de chaînes. Les caractéristiques de l'utilisation de ce type de tables seront abordées dans cet article.
Les tables de lignes sont stockées dans une zone de mémoire spéciale appelée mémoire partagée. Au démarrage de la base de données, cette zone est entièrement chargée en mémoire et y reste tant que la base de données est opérationnelle.
Dans les tableaux de lignes, toutes les données sont placées dans des lignes les unes après les autres, ce qui facilite l'accès à toutes les lignes du tableau. Mais avec l'accès à toutes les valeurs des colonnes, c'est un peu plus difficile, car ces valeurs ne peuvent pas être transférées de la mémoire principale vers le CPU avec la même efficacité que dans le cas du stockage par colonnes. La compression des données avec ce type de stockage est également moins efficace.
L'approche classique pour les bases de données relationnelles, où les données sont stockées dans un format tabulaire, est un stockage qui ressemble à la structure logique d'une table. Chaque enregistrement est stocké sous la forme d'un bloc concaténé des valeurs de chaque colonne du tableau. Vous trouverez ci-dessous un tableau avec le type de stockage classique.

, , . DBA.

, , . . CPU , where .

(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.
Ceci conclut mon bref aperçu des tables avec le type de stockage Row. Malgré les avantages des tables en colonnes, les tables de chaînes continuent d'être utilisées dans la base de données HANA. Fondamentalement, ces tables sont utilisées comme tables techniques ou de configuration avec un nombre d'enregistrements relativement faible, tandis que le rôle principal est donné aux tables avec un type de stockage en colonnes.