Temat: Przeliczenie insertów na IOPS

Cześć Koledzy, mam takie proste/trudne pytanie, jak przeliczylibyście określoną liczbę insertów na IOPSy? Zdaję sobie sprawę, że insert insertowi nierówny, że gra rolę wielkość bloku, liczba triggerów, indeksów itp. ale czy przy niedużym insercie - mieszczącym się w pojedynczym bloku można uznać za poprawne przeliczenie 1 inserta na jakieś 3-10 IOPS (w zależności od ilości obiektów związanych z insertowanym wierszem)?
Dlatego np. dla 1000 insertów na sekundę potrzebowałbym około 5tys. IOPS?

konto usunięte

Temat: Przeliczenie insertów na IOPS

Jonathan Lewis w ksiazce Practical Oracle 8i na stronie 26 (Estimates for Predicting Performance)
estymuje to używając "No of Logical I/O"Ten post został edytowany przez Autora dnia 26.01.16 o godzinie 21:19

Temat: Przeliczenie insertów na IOPS

Dzięki Bartosz, mógłbyś przybliżyć myśl autora, bo enigmatycznie dla mnie to brzmi.
Dla każdego Insertu:
3400bytes + rozmiar wiersza + 4200bytes (dla każdego indeksu na tabeli do której robię insert) + podwójny rozmiar rollback segment i do tego dodać pojedynczy rozmiar rollback segment dla każdego indeksu?
Jeżeli tak, i zmieści się to w rozmiarze bloku (w większości przypadków 8KB), to jak rozumiem mam 1 IOPS?

konto usunięte

Temat: Przeliczenie insertów na IOPS

Rozjechala mi sie tabelka, podaj mi maila to zeskanuje Ci ta strone.
Paweł Grzegorz Kwiatkowski

Paweł Grzegorz Kwiatkowski Architekt
oprogramowania,
Ericsson

Temat: Przeliczenie insertów na IOPS

Zgadzam się, z tym, że liczba logicznych IO jest dobrym punktem wyjścia, ale "liczba IOPSów na insert" wydaje mi się źle/nieprecyzyjnie postawionym pytaniem.

Załóżmy, że do wstawienia wiersza do tabelki potrzeba 4 operacji IO.
- odczyt bloku
- zapis obrazu undo
- zapis bloku do redo
- zapis bloku przez DBWR

Pytasz, ile trzeba IOPS (IO Per Second) żeby wykonać tego inserta? To już zależy od tego jak szybko chcesz te inserty robić i ile ich masz:)

4 IOPS jak chcesz w 1 sekundę.
2 IOPS jak chcesz w 2 sekundy
1 IOPS jak chcesz w 4 sekundy

Wydaje mi się, że trzeba postawić pytanie 'ile IOPS potrzebuję, żeby wykonać 100k insertów w czasie T'. I tu przydadzą się te logiczne IO.

Temat: Przeliczenie insertów na IOPS

Paweł, rzeczywiście może pytanie nie jest precyzyjne więc może je odwrócę, bo wtedy będzie lepiej widać o co mi chodzi.
Mam 100 000 insertów i potrzebuję je zapisać w jednej sekundzie i teraz pytanie co wykombinować żeby się wyrobić.
Logiczne IO są dobre z punktu widzenia bazy, ale ja chciałbym spojrzenia od strony macierzy i nie zwracać uwagi ile baza danych potrzebuje operacji, a raczej ile ich potrzebuje macierz żeby zaspokoić te 100k insertów na sekundę.

A jeszcze prościej,i zdaję sobie sprawę, że bardzo upraszczam, ile IOps powinna wyciągać macierz żeby być w stanie zapisać 100 000 insertów (każdy insert zajmuje mnie niż rozmiaru jednego bloku).

Do Twoich 4 operacji IO dołożyłbym jeszcze operowanie na 2 indeksach (zakładając, że tabela ma klucz główny i jakiś dodatkowy indeks) .
Paweł Grzegorz Kwiatkowski

Paweł Grzegorz Kwiatkowski Architekt
oprogramowania,
Ericsson

Temat: Przeliczenie insertów na IOPS

Te 4 IOPS na insert, to tylko takie uproszczenie :)

Wydaje mi się, że logiczne IO powinny być brane pod uwagę, bo mogą się przełożyć na fizyczne w niesprzyjających okolicznościach przyrody :) (np. za sprawą wypłukiwania buffer cache przez inne sesje).

Dla tych 100k insertów wypadałoby zrobić symulację i zweryfikować ile LIO jest wykonywanych (weryfikacja np. przez zrobienie trace dla takiej sesji i jego analiza).

Jeśli masz kreślony czas na wykonanie tej operacji, np. 1 sekunda, to dzielisz LIO / 1 s i masz liczbę IOPS.

Pojedynczy dysk obrotowy 10k rpm to jakieś 120-150 IOPS. Stąd możesz wywnioskować ile dysków potrzebujesz na macierzy (liczba IOPS / średnia ilość IOPS) + dodatkowe dyski na jakiś RAID.

Zauważ, że te 100k insertów może się mieć różne do transakcji biznesowych wspieranych przez system, np. transakcja 'podpisanie umowy' może generować ileś tam operacji logicznych, ale w ciągu godziny takich transakcji jest średnio np. 125, zaś w szczycie 250, czyli potrzebujesz obsłużyć 250 / 3600 = 0,07 transakcji na sekundę. Te 0,07 pomnożone przez logiczne IO dla operacji 'podpisanie umowy' da Ci wymagane IOPS na macierzy.

Trzeba by posumować IOPSy po różnych transakcjach , ale do tego trzeba mieć jakiś benchmark aplikacji... :)

Temat: Przeliczenie insertów na IOPS

Dzięki Paweł, właśnie z "niesprzyjających warunków" chciałem unikać LIO, ale rzeczywiście do obliczeń może to być całkiem niezły punkt wyjścia.

Następna dyskusja:

Ustawianie RoundRobin polic...




Wyślij zaproszenie do