Мне нужна экспертная консультация для моей базы данных. В основном у нас есть 100 датчиков по всему миру. Мы собираем данные с датчиков и храним их в базе данных для будущего использования.Доступ к большой таблице базы данных из нескольких потоков
В настоящее время я создаю отдельную таблицу базы данных для каждого клиента. Т.е. когда клиент регистрируется в приложении, я создаю для них отдельную таблицу, а данные всех датчиков от этого клиента поступают в их отдельную таблицу базы данных.
Теперь число клиентов растет, поэтому количество таблиц и этот подход больше не выглядят хорошо (возможно, этот подход был не в порядке).
Теперь я хочу сохранить все данные в одной таблице, чтобы скопировать все данные из таблицы клиента в новую таблицу. Теперь размер новой таблицы превышает 5 ГБ с более чем 34 миллионами строк (и растет).
Если я хочу вставлять новые строки в эту новую таблицу одновременно, из нескольких потоков для каждого датчика требуется слишком много времени. Для доступа к данным из одной и той же таблицы требуется много времени.
Как решить эту проблему? Есть ли другое решение? Должен ли я использовать внешнюю облачную службу для хранения данных?
Заранее благодарен!
EDIT: Я использую индексы. Вот схема таблиц
С UNIQUE INDEX idx_userInsDate
(userID
, instrumentID
, utcDateTime
)
Я также посмотрел в сегментирование базы данных, но моя главная проблема, вставки строк в одной таблице из несколько потоков и чтение данных из нескольких потоков занимает некоторое время.
Невозможно ответить на такой широкий вопрос, без какой-либо информации о связанной схеме или указателях. В любом случае - * почему * используйте единую таблицу, если у вас есть такие четкие критерии разбиения, как идентификатор пользователя? Что относительно последствий * безопасности *? Одна уязвимость SQL Injection может отображать * данные каждого * –
Кроме того, вставка отдельных строк в таблицу будет медленной. Было бы проще вставлять входящие строки в промежуточную таблицу и периодически загружать их в большую таблицу. –
В любом случае, вы не предоставили достаточной информации, чтобы дать конкретный ответ: «Не делайте этого». Схема базы данных не должна определяться количеством таблиц, но по конкретным требованиям и тщательным рассмотрением. –