Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dlaczego kwerenda Microsoft SQL Server 2012 zajmuje kilka minut w porównaniu z JDBC 4.0, ale sekundy w Management Studio?

Adaptacyjne buforowanie to dobra odpowiedź. Polecam również sprawdzenie połączeń SET opcje za pośrednictwem programu SQL Server Profiler.

Po uruchomieniu śledzenia upewnij się, że ExistingConnections jest zaznaczone. Porównaj identyfikator SPID z połączenia JDBC i połączenia SSMS. ARITHABORT przychodzi mi na myśl, ponieważ widziałem, jak powoduje różnicę w wydajności między sterownikiem SSMS i JDBC. Microsoft krótko o tym wspomina tutaj:http://msdn.microsoft.com/en-us/library/ms190306.aspx. Informacje o wymianie stosu znajdują się tutaj:https://dba.stackexchange.com/questions/9840/why-would-set-arithabort-on-dramatically-speed-up-a-query

W przypadku Oracle zauważyłem ogromny wpływ, bawiąc się setFetchSize metoda na Statement / PreparedStatement obiekt. Najwyraźniej sterownik SQL Server nie obsługuje tej metody. Jednak w sterowniku jest na to wewnętrzna metoda. Aby uzyskać szczegółowe informacje, zobacz Ustawianie domyślnego wstępnego pobierania wierszy w SQL Server przy użyciu sterownika JDBC.

Ponadto, co robisz w swoim while (rs.next()) pętla? Spróbuj nie robić nic poza czytaniem kolumny, na przykład rs.getInt(1) . Zobacz co się dzieje. Jeśli leci, sugeruje to, że wąskie gardło znajduje się w poprzednim przetwarzaniu zestawu wyników. Jeśli nadal działa wolno, problem musi dotyczyć sterownika lub bazy danych.

Możesz użyć programu SQL Server Profiler do porównania wykonań przychodzących przez JDBC i uruchamianych przez SSMS. Porównaj procesor, odczyty, zapisy i czas trwania. Jeśli są różne, to prawdopodobnie plan wykonania jest inny, co wskazuje mi na pierwszą rzecz, o której wspomniałem:SET opcje.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyzwalacz SQL Server:zrozumienie i alternatywy

  2. Znalezienie rodzica najwyższego poziomu w SQL

  3. Jak uzyskać część numeryczną z ciągu znaków za pomocą T-SQL?

  4. Przenieś dane z jednej bazy danych do innej bazy danych

  5. Jak zainstalować SQL Server na komputerze Mac z VirtualBox?