Introduction (RTL/HVAR)
Sybase Replication Server 15.5 introduit une nouvelle fonctionnalité de réplication en temps réel et optimal vers Sybase IQ : Sybase Replication Server 15.5 RTL Edition (Real Time Loading for IQ).
Cette édition, sous licence, supprime la contrainte de l’envoi de commandes
atomiques OLTP (insert, update, delete
) depuis Replication Server dans les
tables cibles de Sybase IQ, commandes atomiques qui ne sont pas adaptées et
optimales pour le moteur IQ (stockage, compression…). La fonctionnalité RTL
for IQ supprime également les solutions de réplication via des bases tampons
Adaptive Server Enterprise, solutions lourdes en maintenance et complexité (Réplication vers IQ 12.7 via
une base tampon ASE staging).
RTL supporte les versions ci-dessous :
- Adaptive Server Enterprise 15.0.3 et versions supérieures pour la base ASE primaire.
- Sybase IQ 12.7 ESD#3 et versions supérieures pour la base IQ répliquée.
L’option HVAR (High Volume Adaptive Replication) est implicitement activée
avec Sybase Replication Server Real Time Loading Edition for IQ. L’option HVAR
compile et optimise les ordres SQL reçus dans les files (queues) de Replication
Server, cette compilation est réalisée en mémoire dans ce qui est appelée la
ncdb
de Replication Server "In Memory Net Change Database
" afin de déverser de
façon optimale dans les cibles (ASE, IQ, Oracle…) en utilisant dans la mesure
du possible les APIs de chargement massif du moteur cible (Bulk
). Le schéma
ci-dessous illustre bien l’option HVAR High Volume Adaptive Replication :
Cet article propose une mise en route et une prise en main rapides de Sybase Replication Server Real Time Loading for IQ avec HVAR. Les aspects théoriques de la technologie RTL sont partiellement abordés.
Préparation technique des environnements IQ et Replication Server pour l’option RTL/HVAR vers IQ
Le schéma de la réplication de Sybase Adaptive Server Enterprise vers Sybase IQ via Replication Server 15.5 RTL est le suivant :
Préparation et configuration de la base répliquée Sybase IQ
Permissions sur la base IQ
Comme pour la réplication vers Sybase ASE, Replication Server utilise un compte de maintenance dans la base IQ pour appliquer les transactions. Le compte de maintenance doit disposer des droits ci-dessous :
RESOURCE
pour les tables de travail et les indexes temporaires.EXECUTE
pour exécuter la procéduresp_iqwho
.GRANT ALL
sur les tables à répliquer.UPDATE
etEXECUTE
sur toutes les tables et procédures stockées répliquées.
Dans ce guide pratique, le compte est appelé rs155db
, rs155db
est également
le propriétaire des tables répliquées dans le serveur IQ DAS_U1_ASQ
.
Pour démarrer les tests et l’évaluation du produit RS RTL/HVAR, le privilège
DBA est donné au compte rs155db_maint
, évidemment cette configuration doit être
bannie pour un environnement de production.
sybase@DAS_U1_ASQ > iqisql -Usa
grant connect to rs155db identified by ********* go grant DBA to rs155db go grant membership in group rs_systabgroup to rs155db go
Espace de stockage IQ Temporary store
RTL créé des tables temporaires de travail dans le dbspace temporaire de
Sybase IQ pour traiter les ordres update, delete
avec jointures, les indexes
temporaires nécessaires, etc. L’espace nécessaire dans ce dbspace dépend de
la quantité de données traitée. Avant le démarrage des tests, vérifier l’espace
disponible dans le dbspace temporaire :
sybase@DAS_U1_ASQ > iqisql -Usa
exec sp_iqdbspace IQ_SYSTEM_TEMP go
DBSpaceName DBSpaceType ... TotalSize ... --------------- ----------- --------- IQ_SYSTEM_TEMP TEMPORARY 1.95GB
Pour ajouter de l’espace au dbspace temporaire IQ Temp, utiliser la commande
ALTER DBSPACE
( NB : la syntaxe est différente entre la version 12.7 et les
versions 15.x).
Configuration de Sybase Replication Server 15.5 RTL
Le paramétrage de RTL/HVAR vers Sybase IQ est configuré au niveau du thread
DSI (Data Server Interface) vers la base IQ, il ne s’agit pas d’un paramètre
serveur du moteur de réplication RS à modifier avec la commande configure
replication server
.
Création de la connexion vers IQ, définition des classes
Les connexions vers les cibles dans Replication Server sont au format
<dataserver>.<database>
, le fichier interfaces
doit donc référencer
une entrée pour le serveur IQ comme s’il s’agissait d’un serveur Sybase
Adaptive Server Enterprise.
$SYBASE/interfaces
DAS_U1_ASQ
master tli tcp SRVUNXFR30 30071
query tcp ether SRVUNXFR30 30071
Avec la version RS 15.5 RTL edition, une nouvelle classe d’erreurs et une
nouvelle classe de fonctions (function strings
) spécifiques à Sybase IQ font
leur entrée : rs_iq_function_class
et rs_iq_error_class
.
|
|
La création de la connexion vers la base IQ est réalisée avec la commande
create connection
dans Replication Server en spécifiant le profil rs_ase_to_iq
,
profil qui affectera automatiquement à cette connexion la classe d’erreurs
rs_iq_error_class
et la classe de fonctions rs_iq_function_class
.
sybase@IDB_U1_REP > isql -Usa
create connection to DAS_U1_ASQ.rs155db using profile rs_ase_to_iq; standard set username to rs155db set password to ********* go
Connection to 'DAS_U1_ASQ.rs155db' is created.
La connexion au serveur IQ est testée lors du lancement de la commande
create connection
.
Les classes à la connexion IQ sont correctement affectées, pour le vérifier,
lancer la commande rs_helpdb
dans la base RSSD.
sybase@RSD_U1_ASA > isql -Usa
exec rs_helpdb go
dsname dbname dbid controlling_prs errorclass repserver_errorclass funcclass status ------------------------------ ------------------------------ ----------- ------------------------------ ------------------------------ ------------------------------ ------------------------------ ----------------------------------------------------------------- DAS_U1_ASQ rs155db 104 IDB_U1_REP rs_iq_error_class rs_repserver_error_class rs_iq_function_class Log Transfer is OFF, Distribution is ON
Si l’option "using profile rs_ase_to_iq
" a été omise durant la création de
la connexion, utiliser les commandes alter connection set error class to
et set
function string class
pour affecter les classes rs_iq_error_class
et
rs_iq_function_class
à la connexion vers IQ.
Activation de RTL : dsi_compile_enable, dsi_compile_max_cmds, dsi_bulk_threshold, dsi_command_convert, dsi_dataserver_make
La mise en route de RTL est réalisée en configurant le thread DSI (Data Server Interface) qui réplique vers la base IQ, il ne s’agit pas de paramètres globaux au niveau serveur du moteur de réplication.
5 paramètres dsi_%
pour RTL :
dsi_compile_enable
dsi_compile_max_cmds
dsi_bulk_threshold
dsi_command_convert
dsi_dataserver_make
(optionnel)
sybase@IDB_U1_REP > isql -Usa
alter connection to DAS_U1_ASQ.rs155db set dsi_compile_enable to 'on' go alter connection to DAS_U1_ASQ.rs155db set dsi_compile_max_cmds to '50000' go alter connection to DAS_U1_ASQ.rs155db set dsi_bulk_threshold to '15' go alter connection to DAS_U1_ASQ.rs155db set dsi_command_convert to 'i2di,u2di' go suspend connection to DAS_U1_ASQ.rs155db go resume connection to DAS_U1_ASQ.rs155db go
Config parameter 'dsi_compile_enable' is modified. This change will not take effect until the connection/route is restarted. A connection/route can be restarted with the suspend and resume commands. Config parameter 'dsi_compile_max_cmds' is modified. Config parameter 'dsi_bulk_threshold' is modified. Config parameter 'dsi_command_convert' is modified. This change will not take effect until the connection/route is restarted. A connection/route can be restarted with the suspend and resume commands. Connection to 'DAS_U1_ASQ.rs155db' is suspended. Connection to 'DAS_U1_ASQ.rs155db' is resumed.
Le paramètre dsi_compile_enable
est le paramètre majeur qui gouverne les
chargements optimisés dans IQ avec INSERT LOCATION
depuis Replication
Server. Lorsque ce paramètre est à off
, la réplication classique
transactionnelle est réalisée dans le moteur IQ. Lorsque dsi_compile_enable
est
à on
, HVAR et RTL sont activées au niveau du serveur Replication Server.
Les paramètres dsi_compile_enable
et dsi_command_convert
ne sont appliqués
qu’au redémarrage de la connexion ou de la route avec les commandes suspend
connection/resume connection
et suspend route/resume route
.
Dans l’exemple ci-dessus, les valeurs par défaut recommandées par Sybase
pour RTL sont appliquées : 15
pour dsi_bulk_threshold
, 50000
pour
dsi_compile_max_cmds
et "i2di,u2di
" pour dsi_command_convert
.
Le paramètre dsi_dataserver_make
est souvent optionnel : il est peut être
défini à ase, iq, sqlany, ora, mssql, udb, db2
. Replication Server déduit le
type de serveur de données en cible en fonction du profil spécifié à la
création de la connexion (create connection ... using profile
<profile>
…). Dans le cas ici, le profil rs_ase_to_iq
a été appliqué à
la création de la connexion, Replication Server en déduit automatiquement que
le paramètre dsi_dataserver_make
est iq.
sybase@IDB_U1_REP > isql -Usa
admin config, "connection", DAS_U1_ASQ, rs155db, dsi_dataserver_make go
Configuration Config Value Run Value Default Value Legal Values Datatype Status ------------------------------- dsi_dataserver_make iq iq default list: ase,sqlany,iq,ora,mssql,udb,db2 string Connection/route restart required (1 row affected)
Préparation de la réplication de la table QUOTE de Sybase ASE vers Sybase IQ
Dans les étapes qui suivent, les tables dbo.QUOTE
et rs155db.QUOTE
existent
respectivement dans IDB_D1_ASE
et DAS_U1_ASQ
avec les droits nécessaires. La
connexion vers la source ASE IDB_D1_ASE
est déjà créée avec un fichier de
ressources et l’agent de réplication dans IDB_D1_ASE
/ base investment
est en
route.
Création de la définition de réplication et de la souscription vers IQ
La démo va être réalisée sur la table QUOTE
, table de 225 millions de lignes
dans la source ASE. La clé primaire est définie sur les trois premières
colonnes de cette table : INSTRUMENT_ID, RETRIEVAL_DTE
et SOURCE_ID
.
La définition de la réplication pour la table QUOTE
est réalisée avec la
commande create replication definition
de Replication Server :
sybase@IDB_U1_REP > isql -Usa
create replication definition QUOTE_investment with primary at IDB_D1_ASE.investment with primary table named 'QUOTE' with replicate table named rs155db.'QUOTE' ( RETRIEVAL_DTE datetime , INSTRUMENT_ID int , SOURCE_ID varchar(12) , QUOTE float , QUOTE_DATE datetime , UNIT_PRICE float , ACCRUED_INTEREST float , ACCRUED_INTEREST_DATE datetime , CREATED_BY varchar(20) , CREATED_ON datetime , UPDATED_BY varchar(20) , UPDATED_ON datetime ) primary key(INSTRUMENT_ID,RETRIEVAL_DTE,SOURCE_ID)
La souscription de réplication pour la table QUOTE
vers DAS_U1_ASQ.rs155db
est ensuite lancée avec la commande Replication Server create subscription
(sans matérialisation)
sybase@IDB_U1_REP > isql -Usa
create subscription sub_QUOTE_dasu1 for QUOTE_investment with replicate at DAS_U1_ASQ.rs155db without materialization
Subscription 'sub_QUOTE_dasu1' is in the process of being created.
La connexion vers DAS_U1_ASQ
est alors suspendue et rétablie avec les
commandes suspend/resume connection to DAS_U1_ASQ.rs155db
.
Personnalisation de la réplication vers QUOTE : dsi_command_convert à d2none
Le paramètre dsi_command_convert
a été appliqué précédemment à "i2di,u2di
"
pour la connexion vers DAS_U1_ASQ.rs155db
. Cette définition a les conséquences
suivantes pour la réplication d’une table vers DAS_U1_ASQ.rs155db
:
i2di
: chaque insertion sera systématiquement réalisée avec une suppression de la ligne existante puis une réinsertion.u2di
: chaque mise à jour d’une ligne avec la commandeupdate
sera remplacée par une suppression de la ligne existante puis une réinsertion de la ligne incluant les nouvelles valeurs de la commandeupdate
.
La table QUOTE
est une table d’historique, les lignes ne sont jamais
supprimées dans la source, par conséquent le mode de conversion des commandes
Replication Server est personnalisé pour cette table et mis à d2none
: aucune
commande delete
lancée avant les insertions. Le changement du paramètre
dsi_command_convert
pour une table donnée est réalisé avec la commande alter
connection
:
sybase@IDB_U1_REP > isql -Usa
alter connection to DAS_U1_ASQ.rs155db for replicate table named rs155db.QUOTE set dsi_command_convert to 'd2none' go
Config parameter 'dsi_command_convert' is modified. This change will not take effect on existing connections/routes until they are restarted. A connection/route can be restarted with the suspend and resume commands.
La personnalisation est prise en compte dès le redémarrage de la connexion
vers DAS_U1_ASQ.rs155db
aves les commandes suspend/resume connection to
DAS_U1_ASQ.rs155db
.
Utiliser la commande admin config
avec l’option "table
" pour vérifier la
personnalisation du paramètre dsi_command_convert
pour la table QUOTE
:
sybase@IDB_U1_REP > isql -Usa
admin config, "table", DAS_U1_ASQ, rs155db, QUOTE go
Configuration Config Value Run Value Default Value Legal Values Datatype Status Table ------------------------------- dsi_compile_enable <server default> <server default> on list: on,off string Connection/route restart required rs155db.QUOTE dsi_command_convert d2none d2none none list: none, i2none, d2none, u2none, i2di, u2di, t2none string Connection/route restart required rs155db.QUOTE (2 rows affected)
Mise en route de la réplication pour la table QUOTE dans l’environnement primaire (sp_setreptable)
La réplication de la table QUOTE
est activée sur l’environnement primaire
ASE IDB_D1_ASE
(base investment) avec la commande sp_setreptable
:
sybase@IDB_D1_ASE > isql -Usa
use investment go exec sp_setreptable "QUOTE",true go
The replication status for 'QUOTE' is set to true, owner_off. (return status = 0)
Démo de réplication massive (en mode debug avec l’option hold de la commande sysadmin cdb)
Dans la démo de réplication de la table QUOTE
vers IQ, 2000 lignes sont
insérées massivement dans la source sur IDB_D1_ASE
, mais avant l’insertion
massive, des traces sont mises en place côté Replication Server pour mieux
comprendre la cinématique :
- La trace sur le dsi vers
DAS_U1_ASQ.rs155db
est lancée avectrace on
. - La file de réplication HVAR vers
DAS_U1_ASQ.rs155db
est bloquée avec la commandesysadmin cdb, hold
.
Activation des traces sur le DSI vers IQ et suspension de la HVAR dans Replication Server (sysadmin cdb, hold)
La trace sur le DSI vers IQ est activée avec la commande trace
'on','dsi','dsi_buf_dump'
dans Replication Server. Toutes les actions réalisées
par le DSI vers DAS_U1_ASQ.rs155db
sont dès lors consignées dans le fichier de
log de Replication Server.
sybase@IDB_U1_REP > isql -Usa
trace 'on','dsi','dsi_buf_dump' go
Les compilations HVAR et l’exécution vers IQ sont suspendues avec l’option
hold
de la commande sysadmin cdb
. La commande sysadmin cdb
de Replication
Server permet de lister les informations et inspecter la NCDB de Replication
Server (net change database
)
Pour suspendre, reprendre les compilations HVAR dans la net change database
avec sysadmin cdb
:
sysadmin cdb, q_number, q_type, { hold | hold_next | unhold }
Pour pour lister les informations dans la net change database avec sysadmin
cdb
:
sysadmin cdb,
[q_number [,q_type] [list [, ["table_owner.]table_name"] |
[[dump_i | dump_d | dump_u | dump_nc |], table_name ] | dump_nc ]]
sysadmin cdb
sans paramètre affiche toutes les queues de Replication Server
et leurs propriétés HVAR/RTL (compilation, suspension, commandes en
attente).
sybase@IDB_U1_REP > isql -Usa
sysadmin cdb go
DSName DBName Queue QType Compile Hold CdbName Commands_in_Group ------------------------------- ------------------------------- ----------- ----------- ------- ----- ------------------------------------------------- ----------------- IDB_D1_ASE investment 107 0 Off No 0 DAS_U1_ASQ rs155db 106 0 On No 0 RSD_U1_ASA RSD_U1_ASA 101 0 Off No 0
La sortie de sysadmin cdb
permet de retrouver le numéro de la file (ou
queue) et le type de la file (1: inbound
- entrée, 0: outbound
- sortie) pour
laquelle l’option HVAR est active (colonne compile
à on
). Dans cette démo :
Queue # 106
pour DAS_U1_ASQ.rs155db
, Qtype
à 0
(outbound queue
, file de
sortie).
Les compilations HVAR sont alors suspendues pour inspection avec l’option
hold
de sysadmin cdb
sur la queue 106:0
sybase@IDB_U1_REP > isql -Usa
sysadmin cdb, 106, 0, hold go sysadmin cdb go
DSName DBName Queue QType Compile Hold CdbName Commands_in_Group ------------------------------- ------------------------------- ----------- ----------- ------- ----- ------------------------------------------------- ----------------- IDB_D1_ASE investment 107 0 Off No 0 DAS_U1_ASQ rs155db 106 0 On Yes 0 RSD_U1_ASA RSD_U1_ASA 101 0 Off No 0
La colonne Hold
(suspension de la HVAR) pour la queue 106:0
est bien à
On
.
L’option hold
n’est appliquable que pour la prochaine transaction, elle ne peut jamais agir sur une transaction en cours de compilation HVAR et d’exécution vers IQ.
Insertion massive dans la base primaire et informations dans la HVAR cdb (état suspendu)
L’insertion massive est réalisée dans la base primaire. La transaction, une
fois validée (commit
) dans le serveur ASE, arrive dans la queue 106:0
de
Replication Server pour être compilée par l’option HVAR :
sybase@IDB_D1_ASE > isql -Usa
use investment go set rowcount 2000 go begin tran insert into QUOTE select * from QUOTEVW where RETRIEVAL_DTE='2010 FEB 01' go commit go
La commande sysadmin cdb
dans Replication Server montre 2000 ordres
SQL pour la queue vers DAS_U1_ASQ.rs155db
(Commands_in_Group
)
sybase@IDB_U1_REP > isql -Usa
sysadmin cdb go
DSName DBName Queue QType Compile Hold CdbName Commands_in_Group ------------------------------- ------------------------------- ----------- ----------- ------- ----- ------------------------------------------------- ----------------- IDB_D1_ASE investment 107 0 Off No 0 DAS_U1_ASQ rs155db 106 0 On Yes rs155db_49_1 2000 RSD_U1_ASA RSD_U1_ASA 101 0 Off No 0
Un nom cdb (CdbName
) est automatiquement donné dans la net change database
cdb
de RS pour une transaction à traiter par l’option HVAR : ici rs155db_49_1
.
Ce nom de base de données cdb rs155db_49_1
sera utilisé dans la commande INSERT
LOCATION
envoyée dans IQ, un nom de base de données étant obligatoire.
Des informations encore plus précises sont fournies avec l’option list
sur
la queue 106:0
de la commande sysadmin cdb
.
sybase@IDB_U1_REP > isql -Usa
sysadmin cdb, 106, 0, list go
CdbName Replicate_Table Status Cmd_Convert AutoCorrection Nb_Columns PK_Cols CdbTable Insert_Table Inserts Update_Table Updates Delete_Table Deletes Non_Compilable_Cmds Update_Worktable Delete_Worktable Reduced_Inserts Reduced_Updates Reduced_Deletes ------------------------------------------------- rs155db_49_1 rs155db.QUOTE compilable d2none No 12 3 QUOTE_49_1 rs_iQUOTE_49_1 2000 rs_uQUOTE_49_1 0 rs_dQUOTE_49_1 0 0 0 0 0
Les 2000 insertions sont bien présentes pour la table virtuelle HVAR
rs_iQUOTE_49_1
qui sera utilisée pour charger en massif dans IQ en mode INSERT
LOCATION
.
Les options dump_i (insert), dump_u (update), dump_d (delete)
et dump_nc
(non compilables) de la commande sysadmin cdb
permettent d’aller encore plus
loin en granularité pour une table à répliquer dans une transaction. Les
options dump%
donnent le contenu pour les insertions, les updates
, les delete
et les commandes non compilables dans la cdb
, contenu qui sera traité au mieux
en mode massif par l’option HVAR :
sybase@IDB_U1_REP > isql -Usa
sysadmin cdb, 106,0, dump_i,"rs155db.QUOTE" go
Feb 2 2010 12:00AM 27433 FACTFTSP ....
Pour une file mise au statut hold
, l’état suspendu est notifié dans le
fichier de log de Replication Server uniquement lorsqu’une transaction arrive
dans la file HVAR.
T. 2010/07/16 15:37:46. (24): HQ end of transaction, holding ...
Envoi vers IQ avec INSERT LOCATION depuis la HVAR (sysadmin cdb, unhold)
L’état de mise en attente (pour inspection) est alors retiré pour déclencher
la réplication vers IQ avec l’option unhold
de la commande sysadmin cdb
:
sybase@IDB_U1_REP > isql -Usa
sysadmin cdb, 106, 0, unhold go sysadmin cdb go
DSName DBName Queue QType Compile Hold CdbName Commands_in_Group ------------------------------- ------------------------------- ----------- ----------- ------- ----- ------------------------------------------------- ----------------- IDB_D1_ASE investment 107 0 Off No 0 DAS_U1_ASQ rs155db 106 0 On No 0 RSD_U1_ASA RSD_U1_ASA 101 0 Off No 0
La trace dsi dans le fichier de log de Replication Server montre la commande
IQ INSERT LOCATION
dans la table rs155db.QUOTE
depuis la table HVAR
rs_iQUOTE_49_1
contenant les 2000 insertions :
INSERT INTO rs155db.QUOTE (RETRIEVAL_DTE,INSTRUMENT_ID,SOURCE_ID,QUOTE,QUOTE_DATE,
UNIT_PRICE,ACCRUED_INTEREST,ACCRUED_INTEREST_DATE,CREATED_BY,
CREATED_ON,UPDATED_BY,UPDATED_ON)
LOCATION 'IDB_U1_REP.rs155db_49_5'
{ SELECT * FROM rs_iQUOTE_49_1 }
IDB_U1_REP.log
T. 2010/07/16 17:55:31. (49): Command sent to 'DAS_U1_ASQ.rs155db':
T. 2010/07/16 17:55:31. (49): 'set temporary option Load_Memory_MB='100''
T. 2010/07/16 17:55:31. (49): 'set temporary option Minimize_Storage='on''
T. 2010/07/16 17:55:31. (49): 'set temporary option join_preference=5'
T. 2010/07/16 17:55:31. (49): Command sent to 'DAS_U1_ASQ.rs155db':
T. 2010/07/16 17:55:31. (49): 'lock table rs155db.QUOTE in write mode wait'
T. 2010/07/16 17:55:31. (49): Command(s) to 'DAS_U1_ASQ.rs155db':
T. 2010/07/16 17:55:31. (49): 'begin transaction '
T. 2010/07/16 17:55:31. (49): Command sent to 'DAS_U1_ASQ.rs155db':
T. 2010/07/16 17:55:31. (49): 'insert into rs155db.QUOTE (RETRIEVAL_DTE,INSTRUMENT_ID,S
OURCE_ID,QUOTE,QUOTE_DATE,UNIT_PRICE,ACCRUED_INTEREST,ACCRUED_INTEREST_DATE,CREATED_BY,
CREATED_ON,UPDATED_BY,UPDATED_ON) location 'IDB_U1_REP.rs155db_49_5' { select * from rs
_iQUOTE_49_1 }'
T. 2010/07/16 17:55:31. (50): Insert location table QUOTE_49_1
T. 2010/07/16 17:55:31. (50): 'Bulk columns : (RETRIEVAL_DTE,INSTRUMENT_ID,SOURCE_ID,QU
OTE,QUOTE_DATE,UNIT_PRICE,ACCRUED_INTEREST,ACCRUED_INTEREST_DATE,CREATED_BY,CREATED_ON,
UPDATED_BY,UPDATED_ON)'
T. 2010/07/16 17:55:31. (50): 'Bulk row : ("20100201 00:00:00:000",30611,"DATASTREAM",1
,"20100201 00:00:00:000",1, NULL, NULL,"dbo","20100202 02:40:41:266", NULL, NULL)'
T. 2010/07/16 17:55:31. (50): 'Bulk row : ("20100201 00:00:00:000",30726,"DATASTREAM",1
,"20100201 00:00:00:000",1, NULL, NULL,"dbo","20100202 02:40:41:266", NULL, NULL)'
T. 2010/07/16 17:55:31. (50): 'Bulk row : ("20100201 00:00:00:000",2722,"DATASTREAM",1,
"20100201 00:00:00:000",1, NULL, NULL,"dbo","20100202 02:40:41:266", NULL, NULL)'
La transaction contient 2000 lignes, le paramètre dsi_bulk_threshold
positionné à 15 est donc dépassé, aussi les commandes Bulk row
et INSERT
LOCATION
sont déclenchées pour optimiser et réaliser une insertion massive dans
IQ.
Le fichier message iqmsg
du serveur IQ confirme l’insertion en mode optimisé avec
INSERT LOCATION
:
DAS.iqmsg
I. 07/16 17:55:35. 0000034619 Insert Started.
I. 07/17 17:55:35. 0000034619 QUOTE
I. 07/16 17:56:01. 0000034619 [20895]: Insert Pass 1 completed in 26 seconds.
I. 07/16 17:56:01. 0000034619 [20895]: Insert Pass 2 completed in 0 seconds.
I. 07/16 172:56:01. 0000034619 [20834]:
2000 records were inserted into 'QUOTE'.
I. 07/16 17:56:01. 0000034619 [20896]: Insert for 'QUOTE' completed in 26 second
s. 2000 rows inserted.