Cosa ti ha ispirato a richiedere questa lista dei desideri?
Gli script JMP che venivano eseguiti rapidamente in JMP 17 ora sono molto più lenti in JMP 18 perché OpenDatabase() esegue query aggiuntive e non necessarie sul dizionario dati.
Quale miglioramento vorresti vedere?
Consentire agli utenti di disattivare le query del dizionario dati.
DETTAGLI -
In JMP 17, quando si richiamava OpenDatabase() con SQL personalizzato su una connessione ODBC (Oracle), JMP eseguiva inizialmente due query SQL aggiuntive prima di eseguire l'istruzione SQL personalizzata dell'utente:
SELEZIONA VALORE DA SYS.NLS_DATABASE_PARAMETERS DOVE PARAMETRO = 'NLS_CHARACTERSET'
SELEZIONA VALORE DA SYS.NLS_DATABASE_PARAMETERS DOVE PARAMETRO = 'NLS_NCHAR_CHARACTERSET'
Queste due query non hanno restituito dati, ma sono state eseguite molto rapidamente sul server del database, causando quindi un ritardo trascurabile (da 0,5 a 1,0 secondi) per l'utente JMP.
In JMP 18, quando si esegue esattamente la stessa chiamata OpenDatabase() con SQL personalizzato sulla stessa connessione ODBC (Oracle, stesso server), JMP esegue le stesse 2 istruzioni pre-customSQL, nonché 2 istruzioni pre-customSQL aggiuntive (istruzioni JMP18-SQL1_DD e JMP18-SQL2_DD elencate di seguito).
Purtroppo, sui nostri database aziendali (che hanno un dizionario dati piuttosto ampio), l'esecuzione/restituzione di queste 2 istruzioni SQL aggiuntive (DD=Data Dictionary) può richiedere dai 30 ai 45 secondi, causando un ritardo significativo nell'esecuzione del codice SQL personalizzato dell'utente JMP. E, dato che l'utente JMP desidera semplicemente i risultati del proprio codice SQL personalizzato e non ha bisogno dei risultati del codice SQL DD (non può nemmeno accedervi o utilizzarli in alcun modo per influenzare JMP, che chiude immediatamente la connessione al database), questo ulteriore ritardo non serve a nulla.
Pertanto, richiedo che venga creata una nuova versione di JMP 18 con una preferenza booleana (Preferenze->Tabelle->ODBC Inspect Data Dictionary) impostata di default su "on", che può essere impostata su "off", disabilitando così l'esecuzione di queste due istruzioni SQL aggiuntive.
Per maggiori dettagli tecnici, vedere le tempistiche allegate di JMP 17 e 18 e le istruzioni pre-customSQL eseguite quando si utilizza OpenDatabase().
Fred Zellinger.
JMP 17 OpenDatabase() Transazioni con il database:
(0,00~0,41 sec) - scambia stringa di connessione, autorizzazione, dettagli client/database
( @0.41sec) - SELEZIONA VALORE DA SYS.NLS_DATABASE_PARAMETERS DOVE PARAMETRO = 'NLS_CHARACTERSET' = ORA-01403: nessun dato trovato
( @0.51sec) - SELEZIONA VALORE DA SYS.NLS_DATABASE_PARAMETERS DOVE PARAMETRO = 'NLS_NCHAR_CHARACTERSET' = ORA-01403: nessun dato trovato
( @0,68 sec) - ...esegui SQL personalizzato dall'utente
( @0,65 sec) - ...inizio restituzione dati
JMP 18 OpenDatabase() Transazioni con database:
(0,00~0,74 sec) - inizio connessione, scambio stringa di connessione, autenticazione, dettagli client/database
(@ 0,74 sec) - SELEZIONA VALORE DA SYS.NLS_DATABASE_PARAMETERS DOVE PARAMETRO = 'NLS_CHARACTERSET' = ORA-01403: nessun dato trovato
(@ 0,84 sec) - SELEZIONA VALORE DA SYS.NLS_DATABASE_PARAMETERS DOVE PARAMETRO = 'NLS_CHARACTERSET' = ORA-01403: nessun dato trovato
(0,92~26,90 sec) - Esegui JMP18-SQL1_DD e restituisci i dati
(26,90~43,32 sec) - Esegui JMP18-SQL2_DD e restituisci i dati
( @43.33sec) - ...esegui SQL personalizzato dall'utente
( @43.34sec) - ...inizio restituzione dati
JMP18-SQL1_DD:
seleziona * da (
selezionare
qualificatore_tabella nullo, proprietario_tabella o1, nome_oggetto nome_tabella o1
, decode(o1.owner,'SYS', decode(o1.object_type,'TABLE','TABLE DI SISTEMA','VIEW', 'VIEW DI SISTEMA', o1.object_type), 'SYSTEM'
, decode(o1.object_type,'TABLE','TABLE SYSTEM','VIEW', 'VIEW SYSTEM', o1.object_type), o1.object_type
) tipo_tabella
, osservazioni nulle
da tutti gli oggetti o1
dove o1.object_type in ('TABELLA', 'VISTA')
unione
selezionare
qualificatore_tabella nullo, proprietario_tabella, nome_sinonimo nome_tabella
, tipo_tabella 'SINONIMO'
, osservazioni nulle
da tutti gli oggetti o3, tutti i sinonimi s
dove o3.object_type in ('TABLE','VIEW')
e s.table_owner = o3.owner e s.table_name = o3.object_name
unione
selezionare
qualificatore_tabella nullo, proprietario_tabella s1, nome_sinonimo nome_tabella
, tipo_tabella 'SINONIMO'
, osservazioni nulle
da tutti i sinonimi s1
dove s1.db_link non è nullo
) tabelle
DOVE 1=1 E (table_type = 'TABLE' )
ORDINA PER 4,2,3
JMP18-SQL2_DD:
seleziona * da (
selezionare
qualificatore_tabella nullo, proprietario_tabella o1, nome_oggetto nome_tabella o1
, decode(o1.owner,'SYS'
, decode(o1.object_type,'TABLE','TABLE DI SISTEMA','VIEW', 'VIEW DI SISTEMA', o1.object_type), 'SYSTEM'
, decode(o1.object_type,'TABLE','TABLE SYSTEM','VIEW', 'VIEW SYSTEM', o1.object_type)
, o1.object_type) tipo_tabella
, osservazioni nulle
da tutti gli oggetti o1
dove o1.object_type in ('TABELLA', 'VISTA')
unione
selezionare
null table_qualifier, s.owner table_owner, s.synonym_name table_name, 'SYNONYM' table_type, null comments
da tutti gli oggetti o3, tutti i sinonimi s
dove o3.object_type in ('TABLE','VIEW')
e s.table_owner = o3.owner e s.table_name = o3.object_name
unione
selezionare
null table_qualifier, s1.owner table_owner, s1.synonym_name table_name, 'SYNONYM' table_type, null comments
da tutti i sinonimi s1
dove s1.db_link non è nullo) tabelle
DOVE 1=1 E (table_type = 'TABLE' )
ORDINA PER 4,2,3
Perché questa idea è importante?