Проблемы реального времени: настройка производительности Oracle (типы / индексы / plsql / запросы) - PullRequest
0 голосов
/ 25 сентября 2011

Я ищу решение в реальном времени ...

Ниже приведены мои столбцы БД. Я использую Oracle10g. Пожалуйста, помогите мне в определении типов таблиц / индексов и настроенного PLSQL / запроса (обоих) для обновлений и вставки

Запросы вставки и обновления просты, но здесь мы должны позаботиться о производительности, потому что моя система будет выполнять такие 200 раз в секунду.

Дайте мне знать ... я должен использовать процедуры или простые запросы? Требуется написать настроенный plsql и запросить правильные типы таблиц БД / индексы.

Мне бы очень хотелось увидеть производительность моей системы после непрерывных 200 обновлений в секунду

Таблица БД (столбцы) (при необходимости я могу изменить структуру, поэтому, пожалуйста, дайте мне знать ...)

Play ID  - ID 
Type - Song or Message
Count - Summation of total play
Retries - Summation of total play, if failed. 
Duration - Total Duration
Last Updated - Late Updated Date Time

Заранее спасибо ... дайте мне знать, если возникнет путаница ...

1 Ответ

1 голос
/ 25 сентября 2011

Вы не очень подробно рассказали, ЧТО вы обновляете и т. Д.

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

Если вы можете создавать индексы специально для обновления, то индексируйте столбцы, которые появятся в предложении WHERE вашего оператора обновления, чтобы записи можно было быстро найти перед обновлением.

Что касается вставки, посмотрите преимущества подсказки /*+ append */ для вставки записей, чтобы увидеть, пойдет ли она на пользу вашему конкретному случаю.

Наконец, структура таблицы, которую вы будете использовать, будет зависеть от тех факторов, которые вы даже не начали касаться с предоставленными вами деталями. Я предлагаю вам либо провести некоторое исследование структуры БД, либо попросить ваших администраторов баз данных 101 класс в нем.

Удачи ...

EDIT:

В ответ на: Play ID - ID ( here id would be song name like abc.wav something..so may be VARCHAR2, yet not decided..whats your openion...is that fine if primary key is of type VARCHAR2....any suggesstions are most welcome...... ) Type - Song or Message ( varchar2) Count - Summation of total play ( Integer) Retries - Summation of total play, if failed. ( Integer) Duration - Total Duration ( Integer) Last Updated - Late Updated Date Time ( DateTime )

Нет ничего плохого в том, что в качестве типа данных VARCHAR2 используется ПЕРВИЧНЫЙ КЛЮЧ (хотя часто возникают споры о значении наличия неспецифического PK, то есть последовательности). Однако вы должны убедиться, что ваш PK уникален, и если вы не можете это гарантировать, то вам стоит иметь такую ​​последовательность, как ваш PK, вместо того, чтобы вводить другой столбец для сохранения уникальности.

Что касается объявления ваших столбцов таблицы как INTEGER, они в конечном итоге все равно будут преобразованы в NUMBER, так что я бы просто создал столбец таблицы как число (если у вас нет особых причин для их создания как INTEGER).

Наконец, для столбца DATETIME вам нужно только уменьшить его как тип данных DATE, если только вам не нужна реальная точность в вашей временной части, в этом случае объявите его как тип данных TIMESTAMP.

Что касается помощи вам в структуре самой таблицы (то есть, какие столбцы вы хотите и т. Д.), Тогда я не могу вам помочь, поскольку ничего не знаю о ваших требованиях к отчетности, требованиях к приложениям или требованиям аудита, лучше всего компании практика, правила именования и т. д. Боюсь, это то, что вы решите сами.

Для повышения производительности сохраняйте индексы минимальными (т. Е. Только столбцы индексов, которые помогут при поиске предложения UPDATE WHERE), обновляйте только минимально возможные данные и, как предлагалось ранее, изучите подсказку APPEND для вставок, которые могут помочь в вашем случае, но вам придется проверить это для себя.

...