на нескольких серверах. Пускай это будут личные сообщение ВК. Они хранятся в партиционированной таблице, и в неё постоянно инсертят. Там есть FK на таблицу users, которая тоже партиционирована.
Так вот на каждый инсерт происходит проверка на существование юзера. Это большой оверхед, так как данных очень много, пользователей тоже очень много и там ±10мс это важно. А система уже отлажена, за последний год не было выявлено случаев нарушения FK. В этом случае выглядит резонным его отключить, нет?
а откуда информация, что там именно так данные хранятся?
> есть супер-высоконагруженная БД, располагается на нескольких серверах Мы всё ещё про PostgreSQL? Потому что если да — нет такого кейса (или кто-то вообще зря выбрал под него RDBMS общего назначения, а не сразу какую-то distributed database). ;) > Пускай это будут личные сообщение ВК. А, личные сообщения... зачем тут ACID RDBMS? ;) > Они хранятся в партиционированной таблице, и в неё постоянно инсертят. > Там есть FK на таблицу users, которая тоже партиционирована. А зачем она партиционирована, кстати? > Так вот на каждый инсерт происходит проверка на существование юзера. > Это большой оверхед, так как данных очень много, пользователей тоже очень много и там ±10мс это важно. "Очень много" — это сколько пользователей, примерно? > А система уже отлажена, за последний год не было выявлено случаев нарушения FK. Потому что их и не может быть при существующих FK, наверное? ;) Опять-таки, если важна только производительность (а не корректность) — зачем там ACID RDBMS?!
но ведь это не правда, проверка существования это меньше 1мс
Обсуждают сегодня