Mentre mi imbarco nel mio primo PASS Summit in pochi anni, è difficile contenere la mia eccitazione per la versione più recente di SQL Server. Ho aiutato Bob Ward (@bobwardms) con l'editing tecnico per il suo libro più recente, "SQL Server 2019 Revealed", e sono stato attivamente coinvolto con i team di prodotto e i miei colleghi MVP durante i cicli CTP e RC. Ho persino partecipato all'esclusivo evento SQL Server 2019 Airlift a Redmond nella prima settimana di ottobre e, sebbene fosse troppo tardi per fornire un feedback che avrebbe avuto un impatto su RTM, ho fornito diversi suggerimenti costruttivi che si spera di vedere in un CU ( o fino a vNext).
Il prodotto non è ancora stato rilasciato, almeno nel momento in cui scriviamo, ma hanno iniziato a definire quali funzionalità (e ce ne sono molte) saranno disponibili in quali edizioni. Come ricorderete, in SQL Server 2016 SP1, hanno aperto tutte le funzionalità dell'area di programmazione a tutte le edizioni e molte (ma non tutte) le funzionalità di prestazioni e disponibilità. Ne ho scritto in un post intitolato "A Big Deal:SQL Server 2016 Service Pack 1". Questo è stato un momento molto eccitante e volevo solo condividere alcune riflessioni sui successi e gli errori nell'ultima versione.
Hit
- Il ripristino accelerato del database è nell'edizione standard . Questa è stata facilmente la sorpresa più grande per me, poiché pensavo che sarebbe stata una funzionalità dell'edizione Enterprise. È una funzionalità di disponibilità, perché può ridurre drasticamente i tempi di failover e ripristino e può anche essere considerata una funzionalità per le prestazioni, perché ora puoi usare lo stesso archivio versioni locale per cose come RCSI invece di condividere l'archivio versioni in tempdb. Puoi persino inserire l'archivio delle versioni locali nel proprio filegroup, cosa che non era un'opzione quando ho scritto della funzionalità a marzo. Avere questo disponibile in tutte le edizioni è fantastico, ma devi assicurarti di testare il tuo carico di lavoro rispetto a una linea di base.
- Transparent Data Encryption (TDE) è ora in Standard Edition . Tenendo presente che la documentazione non è definitiva, questo è un grande cambiamento per molti negozi e ha senso che una caratteristica di sicurezza così importante non dovrebbe essere un elemento di differenziazione per l'edizione più costosa. Non è né una funzionalità né una funzionalità di disponibilità e la sicurezza dei dati di base e ragionevole non dovrebbe costare di più, IMHO. Nike Neugebauer è d'accordo. Always Encrypted e altre funzionalità come Row-Level Security e Dynamic Data Masking sono disponibili in tutte le edizioni, ma non sempre si adattano alla soluzione "easy button" che i clienti stanno cercando.
- Inline UDF scalare è in tutte le edizioni, anche Express . Questa è un'ottima funzionalità che essenzialmente nasconde tutte le cattive prestazioni che hai usato per ottenere da funzioni scalari definite dall'utente inefficienti (ho scritto per la prima volta su questa funzionalità un anno fa). Sono sorpreso che questo non sia solo Enterprise:avrebbe potuto essere come viste indicizzate, in cui la funzionalità è disponibile ovunque, ma il comportamento è migliore (almeno per impostazione predefinita) in Enterprise Edition. Sono felice che tutti trarranno vantaggio da questo caso.
- La configurazione fornisce migliori consigli nel mondo reale . Questo non è un elemento nell'elenco delle funzionalità, di per sé, ma ci sono alcune nuove opzioni e suggerimenti su MAXDOP e memoria min/max del server che penso siano ottime aggiunte e consentiranno alle persone di configurare meglio le proprie istanze dall'inizio:
Nuova schermata MaxDOP nella configurazione ( clicca per ingrandire)
Nuova schermata di memoria nella configurazione ( clicca per ingrandire)
Ora, se solo potessero aggiungere opzioni per altre cose che sono dirompenti dopo l'installazione, come Blocca pagine in memoria, modifica della soglia di costo predefinita per il parallelismo, specificando flag di traccia di avvio (come 3226!), evidenziando le impostazioni del piano di alimentazione non ottimali e abilitando Gruppi di disponibilità direttamente invece di utilizzare Configuration Manager dopo il fatto. E forse potrebbero rimuovere quel fastidioso avviso sul firewall; è sempre lo stesso e, almeno per me, non è mai stato significativo o utile in nessuno scenario.
Manca
- Continuano a non spostarsi sul limite di 128 GB per l'edizione standard , nonostante molte richieste (come questa di Erik Darling). Non è una mia idea originale e non semplificherebbe la licenza o l'applicazione, ma i limiti di memoria potrebbero essere effettuata in relazione al numero di core concessi in licenza. In questo modo il tuo limite di memoria si basa su quanto hai speso per le licenze, non su un limite arbitrario deciso in una sala conferenze da qualche parte 5 anni fa.
Brent Ozar (@BrentO) ha parlato anche della "tempesta perfetta " che coinvolgono le concessioni di memoria nell'edizione standard e sono abbastanza d'accordo:penso che i clienti pagherebbero volentieri il premio per il passaggio dalla licenza CAL alla licenza principale nell'edizione standard se ora ciò significasse che possono utilizzare più (o addirittura tutta) della loro memoria.
- TempDB ottimizzato per la memoria è solo Enterprise Edition , mentre altre tecnologie di database in memoria, come le tabelle con ottimizzazione per la memoria e il pool di buffer ibrido, sono disponibili nell'edizione standard. Ritengo che questa caratteristica sia una sorta di ibrido tra prestazioni e disponibilità; almeno più di un equilibrio rispetto, diciamo, all'inlining UDF. Le funzioni lente fanno solo aspettare le persone; un tempdb sopraffatto può quasi letteralmente eliminare la tua istanza. Ritengo inoltre che i clienti Enterprise tendano ad avere già più e migliore hardware per affrontare il problema rispetto a quello che i negozi più piccoli possono permettersi. I clienti che scelgono la Standard Edition non hanno necessariamente i risparmi in attesa di emettere assegni.
Uno dei suggerimenti che ho avuto su questa funzione era che ci dovrebbero essere argomenti della riga di comando e/o una casella di controllo dell'interfaccia utente durante l'installazione per abilitare questa funzione immediatamente dopo un'installazione o un aggiornamento. Ciò eviterebbe interruzioni dopo l'installazione, poiché l'unico modo per abilitare la funzione è eseguire un riavvio del servizio. Il motivo per cui non è attivo per impostazione predefinita è che ci sono modelli di carico di lavoro in cui il vantaggio non sarà evidente e alcuni scenari di rottura che coinvolgono transazioni e altri database con tabelle ottimizzate per la memoria, quindi vogliono che tu verifichi il tuo carico di lavoro e assicurati che tu stanno osservando i giusti tipi di contesa e che il vantaggio c'è. Ma cosa succede se l'ho già fatto su un altro sistema con lo stesso carico di lavoro?
Pensieri di separazione
Anche se potrebbe sembrare che mi stia lamentando, sono ancora super entusiasta di questa versione e di tutto ciò che ha da offrire. Mi aspetto che la disponibilità venga annunciata sia all'Ignite che al PASS Summit, quindi potresti avere i bit RTM in mano prima di leggere questo.