Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Nastavení časového limitu v ovladači JDBC lze použít k určení priority odezvy aplikace. Ve výchozím nastavení většina časových limitů řidiče určuje prioritu čekání na výsledek, aby se zajistila konzistence dat. Ujistěte se, že jste zvolili časové limity, které jsou vhodné pro potřeby vaší aplikace.
Při počátečním připojení se používá loginTimeout:
-
loginTimeoutje počet sekund, které ovladač čeká na navázání spojení se serverem. Pokud tato doba uplyne, ovladač vrátí chybu a neotevře spojení. Hodnota nula nastavuje timeout na výchozí systémový timeout, který je 30 sekund ve verzích JDBC ovladače 11.2 a novějších. V JDBC ovladači 10.2 a starších verzích je výchozí časový limit 15 sekund. Libovolná nenulová hodnota určuje počet sekund, po které ovladač čeká, než u neúspěšného připojení vyprší časový limit. Pokud máte opakovaně potíže s navázáním spojení s ovladačem JDBC, možná budete muset tento timeout prodloužit na 90 nebo dokonce 120 sekund.loginTimeouttaké omezuje opakované pokusy ovladače o připojení, nikoli jen jeden pokus, což je důležité při připojení k automaticky pozastavené databázi Azure SQL Database serverless. Další informace najdete v článku Připojení k automaticky pozastavené bezserverové databázi.
Jakmile je připojení vytvořeno, queryTimeoutcancelQueryTimeouta lockTimeout jsou použity během provádění příkazů.
socketTimeout se používá pro veškerou komunikaci ovladače se serverem.
-
queryTimeoutje doba v sekundách, kdy ovladač po odeslání příkazu execute na server počká, aby přijal odpověď ze serveru s daty. Pokud se tento čas překročí, příkaz se zruší. Překročení tohoto časového limitu připojení nezavře. Výchozí hodnota je -1, což znamená nekonečný časový limit. -
cancelQueryTimeoutje doba v sekundách, kdy ovladač čeká na potvrzeníqueryTimeoutzrušení ze serveru před vynuceným ukončením nebo zavřením připojení. To znamená, že ovladač čeká celkové množstvícancelQueryTimeoutplusqueryTimeoutsekund před uzavřením připojení. Nastavením tohoto časového limitu na nenulovou hodnotu zajistíte, aby aplikace zůstaly responzivní, pokud dojde k selhání sítě nebo komunikace se serverem, když vypršel časový limit dotazu. Výchozí hodnota této vlastnosti je -1, což je nekonečná doba čekání. -
lockTimeoutje doba čekání na uvolnění zámku v případech, kdy se spustí příkaz blokující zámek. Překročení tohoto časového limitu nemá za následek zavřené připojení. Výchozí hodnota této vlastnosti je -1, což je nekonečná doba čekání. -
socketTimeoutplatí pro veškerou komunikaci soketů se serverem. Pokud server zastaví komunikaci s ovladačem, a to tím, že nepotvrzuje nebo neodpovídá na data, ovladač počká na hodnotusocketTimeout, než připojení uzavře. Nastavením tohoto časového limitu na nenulovou hodnotu zajistíte, aby aplikace zůstaly responzivní, pokud dojde k selhání sítě nebo komunikace se serverem. Výchozí hodnota je 0, což znamená nekonečný časový limit. Ujistěte se, žesocketTimeoutje větší nežqueryTimeout, aby vám nevypršel časový limit soketů běhemqueryTimeoutokna. Podobně se ujistěte, žesocketTimeoutje větší nežcancelQueryTimeout, abyste zabránili výjimkám časového limitu soketů během oknacancelQueryTimeout.
Přiměřené hodnoty časového limitu pro vaši aplikaci závisí na prioritách aplikace. Nastavení nižších hodnot pro časové limity určuje prioritu odezvy aplikace oproti konzistenci dat. Po dosažení časových limitů musí aplikace rozhodnout o nejlepším průběhu akce. Toto rozhodnutí vychází z prováděné databázové akce. Například u příkazu SELECT může být rozhodnutí nahlásit chybu uživateli, nebo se znovu připojit a zkusit znovu. U příkazů INSERT nebo UPDATE může být toto rozhodnutí odlišné.
Pro responzivní aplikaci loginTimeout a queryTimeout měla by být nastavená na relativně nízké hodnoty. Podobně by také měla být nastavena nízká hodnota cancelQueryTimeout, aby ovladač nečekal příliš dlouho na potvrzení zrušení dotazu serverem, když queryTimeout dojde k překročení. Nakonec by mělo být socketTimeout nastavováno, aby se zabránilo příliš dlouhému čekání ovladače v jakémkoli scénáři, kdy dojde k přerušení připojení k serveru (přerušení sítě, selhání serveru atd.).
Souhrn vlastností
| Vlastnictví | Description | Výchozí | Výsledek připojení |
|---|---|---|---|
loginTimeout |
Počet sekund, po které by měl ovladač čekat před vypršením časového limitu neúspěšného připojení. | 30 sekund [11,2+], jinak 15 sekund |
Uzavřené připojení |
queryTimeout |
Počet sekund čekání před zrušením dotazu. | -1 [Nekonečný časový limit] | Otevřené připojení |
cancelQueryTimeout |
Počet sekund čekání na potvrzení zrušení QueryTimeout. | -1 [Nekonečný časový limit] | Uzavřené připojení |
lockTimeout |
Počet milisekund, které je třeba počkat, až databáze vrátí chybu časového vypršení uzamčení. | -1 [Nekonečný časový limit] | Otevřené připojení |
socketTimeout |
Počet milisekund, které se mají čekat na čtení nebo zápis socketu. | Nula [Nekonečný časový limit] | Uzavřené připojení |