Как разделить таблицу пользователей

#postgresql

#postgresql

Вопрос:

Какова была бы лучшая стратегия для разделения таблицы «пользователи», которая выглядит следующим образом:

 create table users (  id uuid default gen_random_uuid() primary key,  username varchar not null unique,  password varchar not null,  email varchar not null unique,  created_at timestamp with time zone default now(),  updated_at timestamp with time zone default now() )  

Требования к таблице следующие:

  • поддержка ОБНОВЛЕНИЯ имени пользователя, пароля, электронной почты, updated_at; и УДАЛЕНИЯ записей.
  • внешние ключи, ссылающиеся на него, в том числе с on delete cascade предложением.
  • таблица имеет уникальные ограничения.

ПРИМЕЧАНИЕ: последние 2 требования можно опустить, реализовав логику на уровне приложения.

Цель состоит в том, чтобы ускорить выполнение стандартных запросов потока аутентификации.

Комментарии:

1. Я полагаю, вы также хотите поддержать INSERT заявления? 🙂

2. Что именно медленного в текущих » стандартных запросах потока аутентификации «? Пожалуйста, опубликуйте их и планы их выполнения. Почему вы думаете, что разделение поможет?

3. Учетная запись пользователя, хранящая таблицу, обычно не является кандидатом на разделение. Как ты думаешь, зачем тебе это нужно? Ожидаете ли вы сотни миллионов пользователей? Вам нужно регулярно удалять «старые» файлы? «Стандартный поток аутентификации», скорее всего, использует запросы с условием username и password и для этого разбиение на разделы на самом деле не ускорит процесс (это, вероятно, замедлит его).

4. @Bergi я писал о возможности обновления в контексте ключа раздела, так как некоторые варианты ключей будут ограничивать обновления записей.. Это одно из ограничений разделения. Вставка никогда не является проблемой в этом отношении.