Wpis z mikrobloga

#mssql #sqlserver #bazydanych #bigdata

- Będę miał tabelę, w której będzie kilkaset tysięcy milionów rekordów (a może nawet i kilka miliardów).
- Kolumny to tylko id i jakiś tekst (varchar z około n=20-200).
- Chcę zabezpieczyć się przed duplikatami w kolumnie z tekstem.

Co się stanie jak założę na kolumnie z tekstem unique constraint? Jak bardzo zwolni insert? Ile taki indeks będzie zajmował? Tabela pewnie zajmie z kilkaset GB.
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mk321: ciekawy problem w sumie, może kto mądrzejszy się wypowie i zrobi benchmark, a brałeś pod uwagę nietworzenie unique constrainta a wykorzystanie GUIDa jako ID? O ile nie zagwarantuje Ci unikatowości, o tyle raczej możesz się jej spodziewać biorąc pod uwagę prawdpodobieństwo kolizji guidów?
  • Odpowiedz
zrobi benchmark


@Koliat: sam bym zrobił, ale nie mam za bardzo gdzie (potrzebuję mocnej maszyny z miejscem kilkaset GB).

Kwestia też ile by trwało zapakowanie tabeli danymi, utworzenie constrainta (tzn. indeksu, bo automatycznie się tworzy przy
  • Odpowiedz
@mk321: hmm. Pytanie czy inserty robisz z intem, czy pozwalasz tym zarządzać SQLowi? Jeśli robisz inserty z ID, to pamiętaj że int ma max value 2,147,483,647 - jeśli mówisz o kilku miliardach, może to przekroczyć zakres? Co do szybkości i benchmarka, postaw sobie na cloudzie SQLa, nawet jakiegoś tłustego na godzinę dwie, potem wyłącz maszynę żeby dolarów nie jadła i tyle - takie E32v3 na Azure (32 CPU, 256GB RAM)
  • Odpowiedz
Pytanie czy inserty robisz z intem, czy pozwalasz tym zarządzać SQLowi?


@Koliat: pozwalam zarządzać SQLowi.

pamiętaj że int ma max value 2,147,483,647 - jeśli mówisz o kilku miliardach, może to przekroczyć
  • Odpowiedz
@mk321: też raczej nie robisz tego samodzielnie a dla firmy, przecież mogą kupić kawałek clouda i to będą grosze dla nich, jesli nie mają takiego serwera testowego na stanie ;-) Zawsze możesz dorzucić jeszcze więcej RAMu i dysków, kwestia tylko wydajności ;-)

Srry - dopiero teraz zrozumiałem że chcesz unikat w kolumnie z tekstem - co to za dane ten unikat ma przedstawiać?
  • Odpowiedz
via Wykop Mobilny (Android)
  • 1
@mk321: najszybciej będzie założyć indeks już po insercie, w dodatku dzięki temu nie będzie pofragmentowany. Jeśli chodzi o spowolnienie inserta, to największy wpływ będzie mieć na to fill factor strony i wysokość drzewa(która dzięki logarytnicznej naturze indeksowania będzie w na oko w granicach 8-10 - bez tragedii ;) )
  • Odpowiedz