может ли кластеризация увеличить производительность?

брадобрей
Дата: 22.03.2011 23:06:26
ORA__SQL
verter
select * from table1 where name like '%вася%'

См. INDEX FAST FULL SCAN

давай ка пример приведи
Сергей Арсеньев
Дата: 23.03.2011 08:47:24
verter
select * from table1 where name like '%вася%'

IMHO. Для подобных запросов архитектура RAC мало подходит.
Для распараллеливания fullscan запросов нужно распараллелить хранилище по каналам ввода-вывода в первую очередь. И имея независимые хранилища информации с независимыми каналами уже в свою очередь распараллеливать вичислительную часть алгоритма на разных исполнителях. Пример смотри в Exadata.
RAC разработан под другое - одновременную работу над одним массивом данных множества алгоритмов требующих больших вычислительных можностей.
verter
Дата: 23.03.2011 11:00:01
Я исхожу из следующих соображений:

1. Если заменить старый сервер на новый или добавить на старый сервер памяти, то запрос будет выполняться быстрее, т.е. производительность возрастёт
2. У Oracle есть технология (RAC, распараллеливание или ещё какая-то, о которой я не знаю) которая позволяет объединить несколько серверов в один кластер таким образом, чтобы oracle работал со всеми серверами как с единым мощным серврером, т.е. объединял в единый массив всю их память

Исходя из этого, я делаю вывод, что каким-то образом можно повысить производительность, т.е. уменьшить время выполнения запроса. И не важно какой именно запрос. Поправьте меня, если я не прав.
-2-
Дата: 23.03.2011 11:10:53
verter
каким-то образом можно повысить производительность
Прежде чем лезть в бутылку, нужно знать, где у нее горлышко.
ORA__SQL
Дата: 23.03.2011 11:16:59
ORA__SQL
verter
select * from table1 where name like '%вася%'

См. INDEX FAST FULL SCAN

Если индекс по столбцу значительно меньше таблицы, то проще:
1) прочитать весь индекс
2) получить ROWID
3) по полученным ROWID выбрать строки из таблицы
Чем читать всю таблицу целиком.
-2-
Дата: 23.03.2011 11:20:36
ORA__SQL,

4) в таблице '%васи%' лежат в очень ограниченном количестве блоков.
pravednik
Дата: 23.03.2011 11:22:19
verter
Я исхожу из следующих соображений:

1. Если заменить старый сервер на новый или добавить на старый сервер памяти, то запрос будет выполняться быстрее, т.е. производительность возрастёт
2. У Oracle есть технология (RAC, распараллеливание или ещё какая-то, о которой я не знаю) которая позволяет объединить несколько серверов в один кластер таким образом, чтобы oracle работал со всеми серверами как с единым мощным серврером, т.е. объединял в единый массив всю их память

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


Не правы, потому как оракл не все может распаралелить.
"т.е. объединял в единый массив всю их память" - этьо только в маркетинговых презентациях.
ORA__SQL
Дата: 23.03.2011 11:25:35
-2-
ORA__SQL,
4) в таблице '%васи%' лежат в очень ограниченном количестве блоков.

И что это меняет? Просмотр всей таблицы VS Просмотр всего индекса
Alexander Ryndin
Дата: 23.03.2011 11:26:52
-2-
verter
каким-то образом можно повысить производительность
Прежде чем лезть в бутылку, нужно знать, где у нее горлышко.
Золотые слова. Если сильно упростить ситуацию, то для запросов типа
select * from table1 where name like '%вася%'
может быть 2 узких места:
1) CPU
2) I/O
Прежде чем что-то делать, нужно понять какое из них является ограничителем в данном случае.
Кластер позволяет нарастить CPU. Но если узкое место в системе хранения, то кластер будет только мешать.
pravednik
Дата: 23.03.2011 11:34:07