@eldar_web

5 мегабайт БД данных (на Postresql) это примерно сколько строк в одной таблице?

Я узнал, что ограничения БД у Heroku - это 5mb.
Проект то тоже не гигантский, поэтому хочется узнать сколько это 5mb?
  • Вопрос задан
  • 1345 просмотров
Пригласить эксперта
Ответы на вопрос 2
Falseclock
@Falseclock
решаю нестандартные задачи
Не правильный вопрос.

Зависит от типа и количества колонок в таблице. Каждая база по своему хранит те же самые текстовые поля или индексы.

Вот пример сколько весят 5 миллионов строк с текстом, индексом и без

211 мб - просто таблица
287 мб - с текстовым полем
394 мб - с индексом по int полю
545 мб - с индексоп по text полю

virtex_old2=# create table test (id serial, amount numeric, customer numeric);
CREATE TABLE
virtex_old2=# INSERT INTO test(amount,customer)  SELECT amount, customer FROM (SELECT generate_series(1,5000000) as id, (random()*10000)::int AS amount, (random()*10000)::int AS customer) as aa;
INSERT 0 5000000
virtex_old2=# SELECT nspname || '.' || relname AS "relation",
virtex_old2-#     pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
virtex_old2-#   FROM pg_class C
virtex_old2-#   LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
virtex_old2-#   WHERE nspname NOT IN ('pg_catalog', 'information_schema')
virtex_old2-#     AND C.relkind <> 'i'
virtex_old2-#     AND nspname !~ '^pg_toast'
virtex_old2-#     AND relname = 'test';
  relation   | total_size
-------------+------------
 public.test | 211 MB
(1 row)
virtex_old2=# ALTER TABLE test
  ADD COLUMN comment text NOT NULL DEFAULT 'text is here';
ALTER TABLE
virtex_old2=#
virtex_old2=# SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
    AND C.relkind <> 'i'
    AND nspname !~ '^pg_toast'
    AND relname = 'test';
  relation   | total_size
-------------+------------
 public.test | 287 MB
 
virtex_old2=# CREATE INDEX ON test (customer);
CREATE INDEX
virtex_old2=# SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
    AND C.relkind <> 'i'
    AND nspname !~ '^pg_toast'
    AND relname = 'test';
  relation   | total_size
-------------+------------
 public.test | 394 MB
(1 row)
virtex_old2=# CREATE INDEX ON test (comment);
CREATE INDEX
virtex_old2=# SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
    AND C.relkind <> 'i'
    AND nspname !~ '^pg_toast'
    AND relname = 'test';
  relation   | total_size
-------------+------------
 public.test | 545 MB
(1 row)
Ответ написан
Комментировать
Antonchik
@Antonchik
Программирую на HTML
Возьмите все поля в бд, узнайте сколько они весят, и узнаете сколько записей
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы