Медленный Oracle и быстрый MS SQL
От: Ulvrid  
Дата: 03.11.15 07:41
Оценка:
Приветствую всех.

Есть такая задача: реализовать дерево каталогов и файлов средствами реляционной субд.
Соответственно имеем таблицу каталогов с внешним ключом на себя же, таблицу файлов с внешним ключом на таблицу каталогов, всё стандартно.
Реализуем на Oracle, точно также, с такой же структурой таблиц, реализуем MS SQL, делает однотипные индексы
Хранимки немного отличаются ввиду различий PL-SQL и T-SQL

Далее, пишем программулину на C#, которая в 300-400 параллельных потоках активно создаёт каталоги, файлы, обновляет, удаляет, считывает их.
Для MS SQL — всё очень шустро, файлы кладутся в базу быстро, быстро считываются — и список, и содержимое. Используется стандартный System.Data.SqlClient.
Для Oracle — тупой запрос на получение списка файлов в каталоге(выборка возвращает не более 10 записей) может занимать сотни миллисекунд.
Если снизить число потоков до 5-10 то всё становится приемлемо, но при большом количестве одновременных обращений к БД резко падает производительность. Используется официальный ODP.NET

Оба сервера на одном компе — i5, 4гб оперативы, windows 7. MS SQL Express 2014 и Oracle 12c Standard, обращение по TCP из 100 мбит локалки.
Хотелось бы понять данный феномен. Заказчик очень хочет использовать Oracle.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.