2015-04-13 10 views
26

Firma Slick historycznie polegała na sterownikach JDBC, które wewnętrznie blokują oczekiwanie na gniazda we/wy w odpowiedzi na zapytania. Każde zaległe wywołanie bazy danych wymaga wątku do zablokowania na gnieździe; w związku z tym nie jest tak reaktywny w takim samym sensie, jak ReactiveMongo, asynchroniczne asocjowanie po gresql-async i mysql, które są asynchroniczne.Czy Slick 3.0 jest reaktywny/asynchroniczny na poziomie sterownika bazy danych? Dla jakich baz danych?

Czy coś się zmieniło pod tym względem w Slick 3.0? Czy jestem zdezorientowany co do tego?

+1

Ścigany pod względem prądu 3.x ma bardzo słabą wydajność transakcji. Zrobiłem mikro test porównawczy [tutaj] (http://jilen.github.io/sdb/). – jilen

Odpowiedz

25

To nie jest asynchronizacja do poziomu kierowcy, ale to nie jest problem. Liczba wątków blokujących oczekujących na połączenia z bazami danych powinna być mała w dobrej konfiguracji. W związku z tym nie zużywają dużo zasobów. Slick zarządza nimi i planuje blokowanie wątków w ich własnej puli wątków, więc nie są one w drodze do obliczeń. "Natywny" sterownik asynchroniczny prawdopodobnie dodałby niewielkie przyspieszenie, ale nie większe. Slick może wspierać to w pewnym momencie w przyszłości. Główna zaleta "reaktywności" pochodzi z tego, co Slick implementuje już w wersji 3.0. Bardziej obszerne wyjaśnienie można znaleźć tutaj: https://www.parleys.com/tutorial/reactive-slick-database-programming

+6

Rozumiem, ale istnieje wielka gwiazdka, jak sądzę, w podstawowej analizie (https://github.com/brettwooldridge/HikariCP/wiki/Obout-Pool-Sizing), która prowadzi do małej puli połączeń size: _ * przy założeniu, że ograniczenia sprzętowe są jedyną przyczyną opóźnień związanych z obciążeniem na serwerze bazy danych_. Chociaż może to być prawdą w niektórych aplikacjach, wszystkie, które ponoszą znaczną liczbę rywalizacji o blokady, szczególnie z transakcji, mogą potrzebować znacznie więcej połączeń, aby uniknąć zakleszczenia spowodowanego nasyceniem basenu. Przynajmniej tak myślę. –

+2

Postanowiłem [zapytać wyższy organ] (https://github.com/brettwooldridge/HikariCP/issues/304) o problem z zakleszczeniem. –

+3

Dodałem bilet tutaj, aby zapoznać się z reaktywnym slickem w odniesieniu do wyrażonych wątpliwości: https://github.com/slick/slick/issues/1131 Konkretne przykłady wspomnianego sporu o blokadę i wiele długotrwałych połączeń (w dowolnej liczbie, która byłaby problem z użyciem zasobów wątku) byłby bardzo pomocny. – cvogt

Powiązane problemy