Существуют-ли способы маштабирования для одного запроса

stenford
Дата: 21.06.2011 11:29:15
Существует-ли возможность улучшить производительность одного запроса (который скажем выполнается 5 секунд) путем горизонтального маштабирования (что-бы время его выполнения стала скажем 1 секунда). Т.е. улучшить время выполнения не за счет апгрейда сервера, а за счет подсоединения еще одного сервера? Или подобного рода маштабирование только предназначено для разгрузки сервера от множества запросов?
tpg
Дата: 21.06.2011 11:36:01
Ога.
Только всё равно проапгрейдится придется до Microsoft SQL Server 2008 R2 Parallel Data Warehouse
Crimean
Дата: 21.06.2011 20:42:47
однозначного ответа нет. но частные решения возможны
из-за того, что для такого масштабирования мы очень сильно упираемся в сетку решить абстрактно - никак
но если чуть знать прикладуху - есть варианты
вплоть до условной реплики данных на второй сервер, на котором данные индексированы по-другому а то и организованы
uaggster
Дата: 21.06.2011 22:12:38
stenford
Дата: 22.06.2011 03:39:04
Crimean
однозначного ответа нет. но частные решения возможны
из-за того, что для такого масштабирования мы очень сильно упираемся в сетку решить абстрактно - никак
но если чуть знать прикладуху - есть варианты
вплоть до условной реплики данных на второй сервер, на котором данные индексированы по-другому а то и организованы

вот какие примерно архитектурные меры могут приняты в такой ситуации: база данных разбита на 2 логических куска (скажем 15 таблиц в одной и 15 в другой), в основом запросы между ними не пересекаются.
Апдейтов мало, есть инсерты новых данных, и при каждой вставке новой строки необходимо просмотреть все имеющиеся записи на наличие определенный совпадений, причем в обоих логических частях базы. Именно это и занимает много времени. Хранилище данных не построить, т.к. никаких вычислительных запросов нет, в основном запросы типа найти запись среди всех остальных записей, у которой совпадают определенные поля, определенные поля имеют бОльшее или меньшее значение и т.д.

Я пока вижу только единственную возможность - разнести логические части базы на разные диски. Горизонтальное маштабирование которое есть в sql server'e не подходит - проблема не в количестве запросов (их сравнительно мало), а в том, что они сравнительно тяжелые
Crimean
Дата: 22.06.2011 11:01:00
что значит "тяжелые"? и индексами это не решается?? примеры!
stenford
Дата: 23.06.2011 03:04:54
Crimean
что значит "тяжелые"? и индексами это не решается?? примеры!

"тяжелые" значит что там есть и полнотекстовый поиск, и запросы типа "like '%bla-bla-bla%'", и даже кастомная реализация fuzzy match'a, реализованная на C# и вызываемая для каждой строки.
Вот и интересуют способы архитектурного воздействия на базу :)
Crimean
Дата: 23.06.2011 10:49:44
а при чем тут база? если вы свои тормоза сами себе и написали
ViPRos
Дата: 23.06.2011 13:35:56
stenford
[Вот и интересуют способы архитектурного воздействия на базу :)


все тяжелое программно в памяти