@immelnikoff
Изучаю БД

Как подготовить MySQL 8.0 с датасетом из 5 млн. фото (2 ТБ) и текстово-числовой информации (50 ГБ) для максимальной производительности на чтение?

Нужно добиться максимальной производительности.
Как я понимаю, исходить нужно из того, что БД будет работать только на чтение. Запись в БД не предвидится!
Какой движок лучше выбрать: InnoDB, MyISAM или ещё какой-то?
Стоит ли удалить все уникальные индексы, или может быть заменить их обычными индексами?
Стоит ли удалить все внешние ключи? Ведь запись не предвидится и нарушение целостности данных не произойдет.
Может что-то ещё?

Что уже сделал:
1) Удалил из БД всю инфу, не участвующую в обучении.
2) Во всех текстовых полях всех таблиц изменил кодировку (CHARACTER SET) с utf8mb4 на cp1251. Оказалось, что все хранимые символы в БД умещаются в пространство cp1251.
3) Для всех целочисленных полей установил минимально достаточный целочисленный тип данных.
4) Все таблицы (кроме таблицы с бинарными данными фото) сделал static: все записи каждой таблицы имеют одинаковый размер в байтах. Для этого пришлось везде изменить тип VARCHAR на CHAR (а кодировка cp1251 в свою очередь гарантирует, что поле типа CHAR для всех записей имеет одинаковый размер в байтах). Благо из-за этого съелось
совсем немного дополнительного места на SSD.
5) Заменил, где это возможно, внешние ключи на ENUM. Насколько это целесообразно для порядка 50 000 значений в ENUM?
  • Вопрос задан
  • 266 просмотров
Решения вопроса 1
@rPman
Для обучения нейросети mysql совершенно не подходит, абсолютно бесполезно и создаст дополнительные накладные расходы.
Храните все в файлах, практически все библиотеки работы с нейронными сетями предоставляют свои форматы для хранения обучающей выборки, используйте их в т.ч. Понятно не удаляйте оригинальные изображения.

На входы/выходы нейронной сети подаются числа,.. в некоторых библиотеках есть готовые инструменты по работе с битмапом, но это просто методы, приводящие изображение к нормализованному массиву чисел

Вам может понадобиться хранить сами нейронные сети (в процессе обучения их может быть много) и значения функций ошибки для обучающих данных для каждой сети, в данном случае наверное можно было бы организовать такое хранение в базе, но не изображения, а ссылки на них.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sgjurano
@sgjurano
Разработчик
А сделать-то вы с этими данными что хотите? Вполне вероятно, что в базу вы и до всех ваших оптимизаций не упёрлись бы.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы