Każdy system ma ograniczenia. Pewne wynikają z użytego silnika SQL (DBMS) inne zaś z założeń [prawie] świadomie podjętych przez developerów. Nasz system takowe posiada:
Ilość pieniędzy (tabela 'cash'). Pieniążki (od lms-1.1) przechowywaliśmy jako 32 bitową liczbę całkowitą i w związku z tym za 8 lat mogliście nas nie lubić posiadając około 5000 użytkowników. Aktualnie (od lms-1.1.7 Hathor) używamy bardziej odpowiedniego typu danych [decimal (9.2), 2 miejsca znaczące po przecinku, a w sumie 9 miejsc na całą liczbę]. Maksymalna wartość to 9'999'999.99 (dotyczy sumy wszystkich operacji finansowych!). Procedury konwertujące liczby na słowa są przygotowane na kwoty tak duże jak 10^18.
MySQL
Rozmiar bazy danych:
Jak mówi dokumentacja do MySQL'a (rozdział: Table size, paragraf "How Big Can MySQL Tables Be?"), MySQL wersja 3.22 był ograniczony do 4 GB na tabelkę. W wersji zaś 3.23 zostało to podniesione do 8 milionów terabajtów (czyli 2^63 bajtów). Jednak warto zauważyć że różne systemy operacyjne mają limity nakładane przez systemy plików, najczęściej jest to 2 lub 4 GB.
Ilość rekordów:
Prawdziwe informacje na temat limitów uzyskamy dopiero po wydaniu polecenia: (w interpreterze poleceń mysql)
mysql> show table status; ...| Avg_row_length | Data_length | Max_data_length | Index_length | ...| 44 | 24136 | 4294967295 | 19456 |
Zauważymy że miejsca wystarczy na około 175 000 razy tyle ile mamy aktualnie wpisów w tabelce. (czyt.: możesz spać spokojnie, chyba że planujesz posiadanie ponad 100000 użytkowników :-)
PostgreSQL
Rozmiar bazy danych:
PostgreSQL zapisuje dane w porcjach po 8 kB. Liczba tych bloków jest ograniczona do 32-bitowej liczby całkowitej ze znakiem, dając maksymalną wielkość tabeli wynoszącą 16 terabajtów. Z uwagi na ograniczenia systemów operacyjnych dane przechowywane są w wielu plikach o wielkości 1 GB każdy.
Ilość rekordów:
PostgreSQL nie narzuca ograniczenia na liczbę wierszy w dowolnej tabeli. Jednak funkcja COUNT zwraca 32-bitową liczbę całkowitą, a zatem dla tabel zawierających ponad dwa miliardy wierszy wynik tej funkcji będzie nieprawidłowy. (Informacja dot. PostgreSQL 7.1)
Poprzedni | Spis treści | Następny |
Poziomy dostępu | Początek rozdziału | Dodatki |