Statistiche a livello di colonna non raccolte a causa di una mancata corrispondenza dei tipi di dati in Data Virtualization

Quando si utilizza la procedura COLLECT_STATISTICS con il tipo di remote-catalog raccolta statistiche su una tabella virtualizzata con una discrepanza tra i tipi di dati della tabella virtualizzata e quelli della tabella remota, è possibile che venga visualizzato un avviso che identifica la colonna interessata e i tipi di dati incompatibili.

Sintomi

Quando Data Virtualization raccoglie statistiche, è possibile che venga visualizzato un avviso simile al seguente esempio. Il messaggio di avviso indica che le statistiche HIGHKEY e LOWKEY non sono state raccolte per la colonna C2.

db2 "call dvsys.collect_statistics('BLUADMIN', 'TESTOTHER', null, 1, null, ?)"
Value of output parameters
--------------------------
Parameter Name  : DIAGS
Parameter Value : Collected statistics for table "BLUADMIN"."TESTOTHER":
Table Cardinality = 2
Column "C3" [CHAR(5)]:  colcard=1, numnulls=1, highkey="1234", lowkey="1234"
Column "C4" [VARCHAR(10)]:  colcard=1, numnulls=1, highkey="12003a", lowkey="12003a"
Column "C5" [CHAR(1)]:  colcard=2, numnulls=0, highkey="a", lowkey="0"
Column "C6" [VARCHAR(10)]:  colcard=2, numnulls=0, highkey="bbb", lowkey="aaa"
Column "C7" [VARBINARY(16000)]:  colcard=1, numnulls=1, highkey="bx'68656C6C6F'", lowkey="bx'68656C6C6F'"
Column "C8" [VARCHAR(16000)]:  colcard=1, numnulls=1, highkey="", lowkey=""
Column "C9" [VARCHAR(16000)]:  colcard=1, numnulls=1, highkey="dsfadfagfewarragagfagresttretw", lowkey="dsfadfagfewarragagfagresttretw"
Column "C1" [SMALLINT]:  colcard=2, numnulls=0, highkey="2", lowkey="1"
Column "C2" [BOOLEAN]:  colcard=2, numnulls=0, highkey="", lowkey=""

Received the following messages while collecting stats:

WARNING: Key stats for column "C2" not collected due to remote type (BIT) incompatibility with virtual type (BOOLEAN)

Return Status = 0

Cause

Quando si virtualizza una tabella, un tipo di dati nell'origine dati remota potrebbe essere diverso dal tipo di dati corrispondente nella tabella virtualizzata.Questo problema può verificarsi a causa di un errore di mappatura dei tipi durante la virtualizzazione, una modifica esplicita alla tabella virtualizzata o una modifica alla definizione della tabella nell'origine dati remota.In questi casi, viene restituito un errore di incompatibilità di tipo.Questo problema riguarda solo le statistiche HIGHKEY e LOWKEY.

Risoluzione del problema

Se le statistiche HIGHKEY e LOWKEY sono importanti per ottenere buone prestazioni delle query, è possibile risolvere questo problema specificando il tipo di remote-query raccolta delle statistiche nella procedura COLLECT_STATISTICS, come mostrato in questo esempio.
db2 "call dvsys.collect_statistics('BLUADMIN', 'TESTOTHER', null, 2, null, ?)"

Per ulteriori informazioni, consultare la procedura memorizzata COLLECT_STATISTICS in Data Virtualization.