Podane: SQL Server 2008 R2. Zamknij niektóre płyty z danymi speedin. Dyski z logami są opóźnione.Optymalizacja wydajności masywnych wkładek ...?
Wymagane: WIELE UMIESZCZA WIELE części wkładek. Jak 10.000 do 30.000 wierszy do prostej tabeli z dwoma indeksami na sekundę. Wkładki mają wewnętrzną kolejność i nie będą się powtarzać, ponieważ taka kolejność wstawek nie może być utrzymywana w krótkim czasie (tj. Wiele równoległych wstawek jest w porządku).
Do tej pory: gromadzenie danych w kolejce. Regularnie (async threadpool) opróżnia do 1024 wpisów do elementu pracy, który zostanie umieszczony w kolejce. Threadpool (klasa niestandardowa) ma 32 możliwe wątki. Otwiera 32 połączenia.
Problem: wydajność jest wyłączona przez współczynnik 300 ... tylko około 100 do 150 wierszy zostało wstawionych na sekundę. Czas oczekiwania na logu wynosi do 40% - 45% czasu przetwarzania (ms na sekundę) w serwerze sql. Obciążenie procesora serwera jest niskie (od 4% do 5%).
Nie nadaje się do użytku: wkładka zbiorcza. Dane muszą być zapisane na dysku w czasie rzeczywistym w miarę możliwości. Jest to w zasadzie archiwizowany proces przesyłania danych przez system, ale istnieją zapytania, które wymagają regularnego dostępu do danych. Mógłbym spróbować wyrzucić je na dysk i używając przesyłania zbiorczego 1-2 razy na sekundę .... spróbuję.
Czy ktoś jest mądrym pomysłem? Moim następnym krokiem jest przeniesienie dziennika do szybkiego zestawu płyt (128 gb nowoczesnych ssd) i zobaczenie, co się wtedy stanie. Znaczący wzrost wydajności prawdopodobnie spowoduje zupełnie inne zmiany. Ale nawet wtedy .... pytanie brzmi, czy/co jest wykonalne.
Więc proszę, odpal inteligentne pomysły.
czy kiedykolwiek uzyskać ostateczne rozwiązanie do tego? – Carth