Если база данных Oracle имеет более одного табличного пространства для хранения данных?
моя команда поддерживает базу данных Oracle, которая составляет ок. 200GB в размере. Все данные (таблицы, индексы и т. д.) живут внутри одного табличного пространства "пользователи". Это плохая идея? Какие преимущества имеют несколько табличных пространств и при каких обстоятельствах я хотел бы добавить больше в свою базу данных?
спасибо!
5 ответов
мое предубеждение (и это в основном вопрос личных предпочтений) заключается в том, что если нет убедительной выгоды для создания дополнительных табличных пространств, жизнь проще с одним табличным пространством.
- нет никакого преимущества производительности для размещения объектов в разных табличных пространствах. Существует старый миф о том, что разделение таблиц и индексов будет иметь некоторые преимущества в производительности. Существует потенциальная польза от распространения ввода-вывода на все доступные шпиндели, но это лучше сделать с несколько файлов данных в одном табличном пространстве, а затем с несколькими табличными пространствами, так как Oracle выполняет циклическое распределение экстентов в разных файлах данных, предполагая, что ваш SAN еще не делает что-то, чтобы выровнять I/O.
- Если у вас есть большие статические таблицы поиска/ истории, такие, что вы можете принести новую копию базы данных на сайт клиента, просто приведя меньшие транзакционные табличные пространства, это было бы причиной рассмотреть несколько табличных пространств. Но их очень мало. приложения с такой настройкой. Если вам придется принести все 200 ГБ, не имеет значения, сколько табличных пространств у вас есть.
- точно так же, если у вас есть большие объекты только для чтения, размещение их в табличном пространстве только для чтения может значительно уменьшить время и пространство, необходимое для резервного копирования. Опять же, это не особенно распространено на практике за пределами хранилищ данных.
- Если ваше приложение может работать без некоторого подмножества объектов, может быть полезно создание отдельных табличных пространств, чтобы вы могли отключить их и выполнить восстановление на уровне табличных пространств. Опять же, несколько приложений могут работать без набора объектов-если вы потеряете табличное пространство индекса, например, приложение, вероятно, так же мертв, как вы потеряли все.
- Если у вас есть большое количество пустых или в основном пустых таблиц и несколько очень больших таблиц, отдельные табличные пространства с различными политиками распределения экстента могут быть предпочтительными из пространства точки зрения использования. Это иногда происходит с упакованными приложениями, где любая данная установка использует относительно небольшой процент доступных таблиц, и вы не хотите, чтобы каждая из пустых таблиц имела относительно большую степень, назначенную ей. С автоматическим управлением экстентами в локально управляемом табличном пространстве это, как правило, не является серьезной проблемой, это может быть более важным, если вы хотите использовать единообразные экстенты.
- Если разные объекты имеют разные приоритеты для диска производительность, и у вас есть разные типы доступных дисков, отдельные табличные пространства могут позволить вам помещать разные объекты на разные наборы дисков. Например, в хранилище данных можно поместить старые данные на более медленный, дешевый диск, а новые - на более дорогой диск. Это не происходит много с приложениями OLTP.
Если ваше приложение не попадает в один из этих особых случаев, единственным преимуществом наличия отдельных табличных пространств является обращение к чувству DBA организация. Лично я более чем счастлив, что могу избежать указания имени табличного пространства каждый раз, когда я создаю объект или провожу циклы перемещения объектов из "неправильного" табличного пространства, когда они неизбежно создаются в табличном пространстве по умолчанию ошибочно. Лично меня не слишком беспокоит, если несколько десятков МБ пространства "тратятся" при использовании локально управляемых табличных пространств с автоматическим управлением экстентами над оптимизированным вручную набором табличных пространств с разными равномерными размерами экстента. На с другой стороны, хорошие DBA, как правило, очень обеспокоены тем, что все организовано "просто так", поэтому я не против, если DBA хочет иметь отдельные табличные пространства индекса и данных только потому, что это обращается к чьему-то чувству эстетики.
см.http://download.oracle.com/docs/cd/B10501_01/server.920/a96521/tspaces.htm
см.http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/physical.htm
вы можете использовать несколько табличных пространств для выполните следующие действия:
распределение дискового пространства управления для базы данных
назначить определенные квоты пространства для пользователи базы данных
контроль наличия данных, принимая некоторые онлайн или в автономном режиме
выполнить частичное резервное копирование базы данных или операции восстановления
распределить хранение данных между устройствами для повышения производительности
одной из причин использования разных табличных пространств было бы желание использовать транспорт табличных пространств для перемещения данных между базами данных. Если у вас есть ограниченный набор данных, который вы хотите переместить, не экспортируя и не импортируя его, транспорт табличного пространства является хорошим вариантом, особенно если важно по причинам тестирования, чтобы данные имели точно такую же физическую структуру, как и исходная система (например, для работы анализа производительности).
Я категорически не согласен с оценкой Джастина Кейвса. У производственного DBA, вероятно, было бы совсем другое мнение.
функция переносимых табличных пространств для перемещения подмножеств данных между базами данных без необходимости перемещения всей базы данных.
табличные пространства только для чтения, поэтому вы не создаете резервную копию всей базы данных каждую неделю, что может занять много часов, и вы не можете выдержать хит производительности за это время, даже если ваше ограничение ставка.
только резервное копирование определенных табличных пространств в фиксированные даты из-за большого размера, хотя во многих местах просто нет таких больших баз данных. же причине, что и выше.
в зависимости от вашего приложения, предположим, есть модули, которые могут функционировать независимо друг от друга на стороне приложения. Если у каждого из них есть свой набор табличных пространств, вы можете отключить табличные пространства одного приложения, чтобы выполнить реорг, не затрагивая другие модули... они могут работать как нормальный.
Что касается разделения данных и индексов: традиционная причина заключалась в том, чтобы поместить их на разные диски, чтобы они не конкурировали друг с другом по производительности. Не так много проблем с сегодняшними возможностями хранения, такими как SANs, где все это действительно одна и та же область хранения, но есть еще рассмотрение того, что вы собираетесь получить конфликт на уровне заголовка файла даже с локально управляемыми табличными пространствами, если у вас есть все ваши объекты в же пространство, где вы не можете locigally отдельные индексы из таблиц!! Даже если вы создадите 20 файлов данных в одном табличном пространстве, вы не сможете решить, куда идут таблицы и индексы, а затем однажды вы заметите, что у вас есть серьезные разногласия на уровне заголовка файла из-за массивной активности против таблицы, где индексы находятся в одном файле данных! На самом деле, откажитесь от этого. если у вас есть только один ts, то вы будет без сомнения, опыт заголовочный файл раздор.
есть больше причин для этого логического разделения, и нет, это не о производительности по большей части, это больше об администрировании в производственной среде.
S. Лотт уже дал хороший список общих причин, по которым можно разделить это на несколько табличных пространств.
более конкретно для вашей ситуации...
Я бы спросил себя, есть ли конкретные причины, чтобы изменить вещи сейчас. Это не такая легкая задача, чтобы сделать структурные изменения. Есть ли проблемы с производительностью? Вы работаете против ограничений пространства для хранения? Вам нужно назначить квоты пространства? Соответствует ли ваш план резервного копирования и восстановления должен?
Если бы вы могли вернуться во времени и переделать вещи с самого начала, вы, безусловно, хотели бы планировать разумно разделить базу данных на разные табличные пространства. Но стоит ли оно того?