Как снизить стоимость хранения, а также улучшить производительность большого стола? - PullRequest
1 голос
/ 17 июня 2019

Обзор: у нас есть таблица в базе данных (Oracle), которая занимает почти 80% общего пространства, выделенного для базы данных.Эта конкретная таблица хранит данные в формате BLOB-объекта JSON и содержит информацию трассировки, в основном связанную с тем, как центральный механизм работает в приложении.

Проблема: для некоторых клиентов эта информация трассировки быстро выросла доотметьте, что эта таблица теперь содержит почти терабайт информации трассировки.Это вызвало опасения, связанные с высокой стоимостью хранилища и ухудшением производительности запросов.

Вопрос: Каковы наилучшие варианты решения этого сценария:

  1. Использование NoSQL для хранения JSONданные блоба?Не уверен, что соответствует стоимости.
  2. Сохранить данные BLOB-объекта в более дешевом хранилище объектов и использовать поиск Lucene / Elastic и т. Д. Для индексации и поиска?У нас есть собственное устройство хранения данных (ECS) EMC, которое может взаимодействовать через S3 API.ECS дешевле, чем хранилище SAN, однако я не уверен в производительности.
  3. Использовать секционирование Oracle для хранения BLOB-объекта JSOB в отдельном табличном пространстве?Это было предложено администратором базы данных несколько лет назад, но я не уверен, что оно решит вопрос о стоимости или производительности проблемы.
  4. Любое другое предложение?

1 Ответ

0 голосов
/ 19 июня 2019

Сжатие базы данных может быть самым простым способом быстрого уменьшения хранилища:

  1. Сжатие большого объекта. Если у вас есть лицензия Advanced Compression, вы можете включить сжатие для столбца. Это может быть несколько связано с предложением № 3, за исключением того, что изменение табличного пространства не имеет значения. (Возможно, администратор базы данных имел в виду табличное пространство, которое было настроено для сжатия. Но я не думаю, что сжатие табличного пространства автоматически сжимает большие объекты.)

    --These commands may take a long time to complete.
    alter table table_name modify column_name(a) (compress);
    alter table table_name move;
    
  2. UTL_COMPRESS.LZ_COMPRESS. Если у вас нет лицензии Advanced Compression, вы можете использовать пакет UTL_COMPRESS для сжатия и распаковки данных. Хотя это может существенно изменить способ использования таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...