Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
JDBC-stuurprogramma downloaden
Dit artikel bevat informatie over twee wijzigingen die de prestaties van het stuurprogramma verbeteren.
Batchverwerking van het ongedaan maken van voorbereide instructies.
Vanaf versie 6.2 wordt een verbetering van de prestaties geïmplementeerd waarmee retouren van servers naar SQL Server worden geminimaliseerd. Voorheen werd voor elke prepareStatement-query ook een aanroep naar unprepare verzonden. Het stuurprogramma verzamelt nu niet-voorbereide query's tot de drempelwaarde van ServerPreparedStatementDiscardThreshold, waarbij de standaardinstelling op 10 is gezet.
Opmerking
Gebruikers kunnen de standaardwaarde wijzigen met de volgende methode: setServerPreparedStatementDiscardThreshold(int value)
Vóór versie 6.2 roept het stuurprogramma altijd sp_prepexec aan. In 6.2 en hoger roept het stuurprogramma voor de eerste uitvoering van een voorbereide instructie sp_executesql aan en voor de rest wordt er sp_prepexec uitgevoerd en een handle eraan toegewezen. Zie Het opslaan van metagegevens van PreparedStatement voor meer informatie.
Vanaf versie 11.2 kan het stuurprogramma, na de eerste sp_executesql-aanroep, extra aanroepen uitvoeren met behulp van sp_prepare of sp_prepexec, afhankelijk van de waarde die is opgegeven in de eigenschap prepareMethod van de verbindingsreeks. Zie De verbindingseigenschappen instellenvoor meer informatie.
Opmerking
Gebruikers kunnen het standaardgedrag wijzigen naar zoals in eerdere versies altijd aanroepen sp_prepexec door enablePrepareOnFirstPreparedStatementCall op true in te stellen met behulp van de volgende methode: setEnablePrepareOnFirstPreparedStatementCall(booleaanse waarde)
Lijst met de nieuwe API's die bij deze wijziging zijn geïntroduceerd, voor batchverwerking van deactiveren van voorbereide statements.
SQLServerConnection batching onvoorbereiden
| Nieuwe methode | Description |
|---|---|
| int getDiscardedServerPreparedStatementCount() | Retourneert het aantal momenteel openstaande unprepare-acties. |
| void closeUnreferencedPreparedStatementHandles() | Dwingt de onvoorbereide aanvragen af voor alle openstaande, genegeerde voorbereide instructies die moeten worden uitgevoerd. |
| boolean getEnablePrepareOnFirstPreparedStatementCall() | Retourneert het gedrag voor een specifiek verbindingsexemplaar. Als dit onwaar is, roept de eerste uitvoering sp_executesql aan en bereidt u geen instructie voor. Als er een tweede uitvoering plaatsvindt, roept het sp_prepare of sp_prepexec aan en stelt daadwerkelijk een voorbereide instructiehandle in. Latere uitvoeringen roepen sp_execute aan. Dit gedrag neemt de noodzaak weg voor sp_unprepare bij het sluiten van een voorbereide instructie als de instructie slechts eenmaal wordt uitgevoerd. De standaardinstelling voor deze optie kan worden gewijzigd door setDefaultEnablePrepareOnFirstPreparedStatementCall() aan te roepen. |
| void setEnablePrepareOnFirstPreparedStatementCall(booleaanse waarde) | Hiermee specificeert u het gedrag voor een specifiek verbindingsexemplaar. Als de waarde onwaar is, roept de eerste uitvoering sp_executesql aan en bereidt geen verklaring voor. Als er een tweede uitvoering plaatsvindt, roept het sp_prepare of sp_prepexec aan en stelt daadwerkelijk een voorbereide instructiehandle in. Latere uitvoeringen roepen sp_execute aan. Dit gedrag neemt de noodzaak weg voor sp_unprepare bij het sluiten van een voorbereide instructie als de instructie slechts eenmaal wordt uitgevoerd. |
| int getServerPreparedStatementDiscardThreshold() | Retourneert het gedrag voor een specifiek verbindingsexemplaar. Met deze instelling bepaalt u hoeveel openstaande verwijderingsacties (sp_unprepare) er per verbinding kunnen zijn voordat een aanroep om de openstaande ingangen op de server op te schonen wordt uitgevoerd. Als de instelling < = 1 is, worden acties voor het onvoorbereiden onmiddellijk uitgevoerd bij het sluiten van de voorbereide verklaring. Wanneer deze aanroepen zijn ingesteld op > 1, worden deze aanroepen samen gebundeld om de overhead van het te vaak aanroepen van sp_unprepare te vermijden. De standaardinstelling voor deze optie kan worden gewijzigd door getDefaultServerPreparedStatementDiscardThreshold() aan te roepen. |
| void setServerPreparedStatementDiscardThreshold(int value) | Hiermee specificeert u het gedrag voor een specifiek verbindingsexemplaar. Met deze instelling bepaalt u hoeveel openstaande verwijderingsacties (sp_unprepare) er per verbinding kunnen zijn voordat een aanroep om de openstaande ingangen op de server op te schonen wordt uitgevoerd. Als de instelling < = 1 is, worden acties voor het onvoorbereiden onmiddellijk uitgevoerd bij het sluiten van de voorbereide verklaring. Wanneer deze aanroepen zijn ingesteld op > 1, worden ze samengevoegd om de overhead te verminderen die ontstaat door sp_unprepare te vaak aan te roepen. |
SQLServerDataSource onvoorbereide batchverwerking
| Nieuwe methode | Description |
|---|---|
| void setEnablePrepareOnFirstPreparedStatementCall(boolean enablePrepareOnFirstPreparedStatementCall) | Als deze configuratie onwaar is, wordt de eerste uitvoering van een voorbereide instructie aangeroepen door sp_executesql en wordt er geen instructie voorbereid. Als er een tweede uitvoering plaatsvindt, wordt sp_prepare of sp_prepexec aangeroepen om een voorbereide instructiehandgreep in te stellen. Latere uitvoeringen roepen sp_execute aan. Dit gedrag maakt de noodzaak voor het sluiten van een voorbereide instructie door sp_unprepare overbodig als de instructie slechts eenmaal wordt uitgevoerd. |
| boolean getEnablePrepareOnFirstPreparedStatementCall() | Als deze configuratie onwaar retourneert, roept de eerste uitvoering van een voorbereide instructie sp_executesql aan en wordt er geen instructie voorbereid. Als er een tweede uitvoering plaatsvindt, roept het sp_prepare of sp_prepexec aan en stelt daadwerkelijk een voorbereide instructiehandle in. Latere uitvoeringen roepen sp_execute aan. Dit gedrag maakt de noodzaak voor het sluiten van een voorbereide instructie door sp_unprepare overbodig als de instructie slechts eenmaal wordt uitgevoerd. |
| void setServerPreparedStatementDiscardThreshold(int serverPreparedStatementDiscardThreshold) | Met deze instelling bepaalt u hoeveel openstaande verwijderingsacties (sp_unprepare) er per verbinding kunnen zijn voordat een aanroep om de openstaande ingangen op de server op te schonen wordt uitgevoerd. Als de instelling < = 1 is, worden acties voor het onvoorbereiden onmiddellijk uitgevoerd bij het sluiten van de voorbereide verklaring. Wanneer deze aanroepen zijn ingesteld op > 1, worden deze aanroepen samengevoegd om de overhead van het bellen sp_unprepare te vaak te voorkomen |
| int getServerPreparedStatementDiscardThreshold() | Met deze instelling bepaalt u hoeveel openstaande verwijderingsacties (sp_unprepare) er per verbinding kunnen zijn voordat een aanroep om de openstaande ingangen op de server op te schonen wordt uitgevoerd. Als de instelling < = 1 is, worden acties voor het onvoorbereiden onmiddellijk uitgevoerd bij het sluiten van de voorbereide verklaring. Wanneer deze aanroepen zijn ingesteld op > 1, worden deze aanroepen samen gebundeld om de overhead van het te vaak aanroepen van sp_unprepare te vermijden. |
Metagegevens van voorbereide verklaringen in cache opslaan
Vanaf versie 6.4 ondersteunt het Microsoft JDBC-stuurprogramma voor SQL Server voorbereide instructiecaching. Als vóór versie 6.4 een query wordt uitgevoerd die al is voorbereid en opgeslagen in de cache, hoeft het aanroepen van dezelfde query niet opnieuw te worden voorbereid. De driver zoekt de query in de cache op om de handle te vinden en voert het uit met sp_execute.
Caching van statement-metadata is standaard uitgeschakeld. Als u dit wilt inschakelen, roept u de volgende methode aan voor het verbindingsobject:
setStatementPoolingCacheSize(int value) //value is the desired cache size (any value bigger than 0)
setDisableStatementPooling(boolean value) //false allows the caching to take place
Bijvoorbeeld: connection.setStatementPoolingCacheSize(10)connection.setDisableStatementPooling(false)
Lijst met de nieuwe API's die zijn geïntroduceerd bij deze wijziging, voor het opslaan van metagegevens van voorbereide instructies in cache
SqlServerConnection-metagegevens opslaan in cache
| Nieuwe methode | Description |
|---|---|
| void setDisableStatementPooling(Booleaanse waarde) | Hiermee stelt u groeperen van instructies in op waar of onwaar. |
| booleaan getDisableStatementPooling() | Retourneert "true" als statement pooling is uitgeschakeld. |
| void setStatementPoolingCacheSize(int value) | Hiermee specificeert u de grootte van de prepared statement cache voor deze verbinding. Een waarde < 1 betekent geen cache. |
| int getStatementPoolingCacheSize() | Retourneert de grootte van de prepared statement cache voor deze verbinding. Een waarde < 1 betekent geen cache. |
| int getStatementHandleCacheEntryCount() | Retourneert het huidige aantal gepouleerde voorbereide statement-koppelingen. |
| boolean isPreparedStatementCachingEnabled() | Of statement pooling is ingeschakeld of niet voor deze verbinding. |
SqlServerDataSource-metagegevens opslaan in cache
| Nieuwe methode | Description |
|---|---|
| void setDisableStatementPooling(Booleaanse disableStatementPooling) | Hiermee stelt u de instructiegroepering in op waar of onwaar |
| boolean getDisableStatementPooling() | Retourneert "true" als statement pooling is uitgeschakeld. |
| void setStatementPoolingCacheSize(int statementPoolingCacheSize) | Hiermee specificeert u de grootte van de prepared statement cache voor deze verbinding. Een waarde < 1 betekent geen cache. |
| int getStatementPoolingCacheSize() | Retourneert de grootte van de prepared statement cache voor deze verbinding. Een waarde < 1 betekent geen cache. |
Zie ook
Prestaties en betrouwbaarheid verbeteren met deparameterprestaties van de voorbereide instructie van het JDBC-stuurprogramma