Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Наперегонки с Access  [new]
Анонимный_тестер
Guest
Всю жизнь мечтал поработать с Oracle, т.к. много слышал хорошего об этой СУБД и даже немного с ней познакомился в ВУЗе.
Выдалось свободное время, установил Oracle 10g XE и начал тестировать.
Создал простейшую табличку с числовым автоинкрементным ключом и числовым полем данных. Ввел первую запись и начал запросом удваивать количество записей. На том же компьютере повторил эти же операции в Access XP. Результаты:
Oracle: 32к инсертов за 12 секунд.
Access: 1М инсертов за 19 секунд.
- Access в 19,7 раз быстрее.

Сделал запрос на обновление всех записей. Во всех записях менял значение неключевого поля на другое число. Результат:
Oracle: 256к апдейтов за 73 секунд
Access: 2М записей за 27 секунд.

Я крайне удивлен результатами, и поэтому у меня вопрос:
1) С чем связана такая низкая производительность Оракла по сравнению с Аксесом?
1а) Может ли это быть исправлено какими-то настройками Оракла?
2) За что тогда любят Оракл? Какие его сильные стороны, если высокой производительности он не показывает? Или производительность его проявляется только на терабайтных БД?

Заранее спасибо за ответы.
23 мар 10, 00:34    [8517027]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3945
Анонимный_тестер,

ну нажмите резет чтоли, когда аксес будет миллионами строк ворочать
23 мар 10, 00:54    [8517047]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Анонимный_тестер
Guest
Андрей Панфилов
Анонимный_тестер,

ну нажмите резет чтоли, когда аксес будет миллионами строк ворочать


Т.е., если я Вас правильно понял, смысл Оракла - это сохранность данных, широкие возможности PL/SQL, еще что-то, но не производительность?

Т.е. для проекта с не особо ценными данными, но требующего высокой производительности по БД, Оракл подходит плохо?
23 мар 10, 01:00    [8517051]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6642
Анонимный_тестер,

Welcome сюда. Как раз Аксесса там и не хватает.

Надо показывать структуры данных и запросы.
23 мар 10, 01:14    [8517075]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Анонимный_тестер
Guest
Siemargl, вот SQL коды
Структура таблицы в Oracle
CREATE TABLE  "TBLTEST1" 
   (	"DATA1" NUMBER(10,1) NOT NULL ENABLE, 
	"KEY" NUMBER(10,1) NOT NULL ENABLE, 
	 CONSTRAINT "TBLTEST1_PK" PRIMARY KEY ("KEY") ENABLE
   )
/

CREATE OR REPLACE TRIGGER  "BI_TBLTEST1" 
  before insert on "TBLTEST1"               
  for each row  
begin   
    select "TBLTEST1_SEQ".nextval into :NEW.KEY from dual; 
end; 

/
ALTER TRIGGER  "BI_TBLTEST1" ENABLE
/
Структура таблицы в Аксесе - два поля, первое - ключ-счетчик, второе - числовое длинное целое.

Код для удвоения количества записей:
ORACLE:
INSERT INTO tbltest1 SELECT * FROM tbltest1;
Аксес:
INSERT INTO tbltest1 ( DATA1 )
SELECT tbltest1.DATA1
FROM tbltest1;
Код для обновления
Oracle:
UPDATE tblTEST1 SET DATA1=200;
Аксес:
UPDATE tbltest1 SET tbltest1.DATA1 = 200;

Только что пришла в голову умная мысля об отсутствии индекса в Оракле по ключевому полю, что наверняка тормозит проверку CONSTRAINT "TBLTEST1_PK" PRIMARY KEY ("KEY") при добавлении.
Но апдейты-то почему такие медленные?
А индекс я сейчас добавлю....
23 мар 10, 01:37    [8517096]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
-2-
Member

Откуда:
Сообщений: 15330
Анонимный_тестер
Создал простейшую табличку с числовым автоинкрементным ключом ...
В оракле автоинкремент сделан триггером? Понимаю, что вставка доставляет удовольствие... но вставка строки вставке строк рознь:
create table test_t (
   id number,
   n number
)
pctfree 1
storage (initial 64m)

create table succeeded.
212ms elapsed
create sequence test_s cache 1000

create sequence succeeded.
28ms elapsed
begin
   for i in 1..1e6 loop
      insert into test_t
         values(test_s.nextval,123456);
   end loop;
   commit;
end;

anonymous block completed
30 367ms elapsed
truncate table test_t

 truncate table test_t succeeded.
294ms elapsed
insert into test_t
select test_s.nextval, 123456
from dual
connect by level <= 1e6

1000000 rows inserted
3 740ms elapsed
commit

commited
47ms elapsed
А сколько займет вставка миллиона строк в access одновременно тремя пользователями?
23 мар 10, 01:38    [8517097]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Анонимный_тестер.
Guest
Нет, индексы для PK и в Оракле, и в Аксесе создались автоматически. Умная мысля оказалась не умная, и вообще пришла в голову не вовремя.

Так что я нуждаюсь в ваших разъяснениях...
23 мар 10, 01:41    [8517098]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Анонимный_тестер
Guest
-2-, спасибо за ваш ответ.

Т.е. надо пользоваться не SQL, а именно PL/SQL. Только его использовании достигается высокая производительность, так?
23 мар 10, 01:47    [8517102]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Анонимный_тестер
Guest
-2-, прокомментируйте, пожалуйста, заодно и ситуацию с обновлениями.

Кстати, вставки-то у вас не такие, как были у меня по смыслу. Вы вставляете одно и то же значение, а я вставляю содержимое записей, которые лишь в примере одинаковые, но в общем случае содержат разные значения.
23 мар 10, 01:55    [8517108]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Анонимный_тестер
Guest
Кроме того, не сравнивайте свои сотни милисекунд с моими десятками секунд, т.к. опыты я провожу на 1.6 ноутбучном селероне, а у Вас какое железо, я не знаю.

Извините за 4 сообщения подряд, объединил бы их в одно, будь у меня такая возможность.
23 мар 10, 02:01    [8517111]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6642
Анонимный_тестер,

На вставку в Вашем случае, скорее всего мешает триггер.

Но вообще, уж слишком подозрительно медленно все происходит. Те тесты, что я приводил в ссылке, проводились _вообще на виртуалке_. И то в разы быстрее.

Приведите конфигурацию бука, есть подозрение, что катастрофически мало памяти.
23 мар 10, 02:11    [8517121]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Анонимный_тестер
Guest
Celeron M 1.6Ghz кеш по-селероновски маленький, точно не знаю.
RAM 768 минус 64 на видео = 704Мб DDR2 533Mhz
Винт относительно медленный: 5400, 20-22Мб/сек - реальная скорость чтения/записи (не одновременно).

Активных задач помимо СУБД, потребляющих процессорное время, в процессе эксперимента не выполнялось. Естественно, запросы на разных СУБД выполнялись не параллельно, а последовательно.
При вставке записей заметной перекачки страниц между жестким диском и ОЗУ не наблюдалось. Могу ради интереса повторить эксперименты с включенным perfmon (но уже завтра), чтобы удостовериться в том, что перекачка страниц не шла.
23 мар 10, 02:22    [8517127]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Добрый Э - Эх
Guest
Анонимный_тестер
Заранее спасибо за ответы.
Друже, ты не поверишь - на ровном гладком асфальте любая легковушка не напрягаясь уделает по скорости любой карьерный самосвал.
Но стОит сменить условия: уйти с асфальтированного трека на раздолбанные горные грунтовые дороги как всё изменится: там любой карьерный самосвал в сопли уделает любую легковушку. А если в задачи обоим испытуемым вменить ещё и перевозку с пункта А в пункт В 300т полезного груза в виде горной каменной породы, то карьерный самосвал сделает это легко и непринужденно, за одну ходку. А уж чего будет с твоей легковушкой, если на неё нагрузить 300т груза - мне и представить-то себе страшно.
Картинка с другого сайта.

Картинка с другого сайта.
23 мар 10, 04:54    [8517212]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 7692
Анонимный_тестер,

0. Характеристики компа и файл параметров оракла покажите.
1. Аксес нелимитирован по использованию памяти, так что сожрёт всю не напрягаясь.
2. По умолчанию в аксесе автокоммит, как часто вы делали коммит в оракловом тесте?
23 мар 10, 09:19    [8517469]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Garrick
Member

Откуда: Москва
Сообщений: 3166
Анонимный_тестер

2) За что тогда любят Оракл? Какие его сильные стороны, если высокой производительности он не показывает? Или производительность его проявляется только на терабайтных БД?

Это вопрос типа "Порше ездит быстрее Белаза. Так почему в промышленности так любят использовать Белазы?" ...Отвечать надо или так понятно?
23 мар 10, 09:24    [8517484]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
-2-
Member

Откуда:
Сообщений: 15330
Анонимный_тестер
Извините за 4 сообщения подряд
Нет, индексы для PK и в Оракле, и в Аксесе создались автоматически. Если бы я сделал PK, вставка еще бы замедлилась. Т.е. надо пользоваться не SQL, а именно PL/SQL. Только его использовании достигается высокая производительность, так? Мне неочевиден ваш вывод. В примере SQL-инсерт прошел быстрее, чем "PL/SQL"-инсерты. Ваш тормоз из-за триггера. в общем случае содержат разные значения в общем случае есть еще роль приложения. Вставка по одной записи из клиентского приложения не критично 20мкс или 400мкс, но может быть 20 одновременных транзакция пройдут за те же 400мкс. А массовая вставка делается массивами. Однозначно, обновление, ориентированное на конкуренцию и сохранность транзакции после сбоев, будет заведомо медленнее записи строки в текстовый файл. т.к. опыты я провожу на 1.6 ноутбучном селероне 1 x xeon 2.8ГГц 4 core, 32ГБ, 4 x SAS15k. Оракл очень прожорлив до памяти и дисков. Апдейты базы, сидящей на одном ноутбучном винчестере будут в разы медленнее. Хотя при вставке в одно горло может быть разница и не большая. Для оценки влияния можно сравнить ожидания по трейсам. По крайней мере, повторите эксперимент без триггера.
Модератор: Тема перенесена из форума "Oracle".


Сообщение было отредактировано: 23 мар 10, 10:17
23 мар 10, 09:43    [8517556]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Konst_One
Member

Откуда:
Сообщений: 11680
вы бы ещё оракл на кпк поставили

ps
тест у вас неравноценный. акцесс - файловая база данных.
про минимальные требования оборудования для оракла почитайте
23 мар 10, 15:44    [8520506]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
балалайка
Member [заблокирован]

Откуда:
Сообщений: 868
в структурированые файлы ищо быстрее писать можно, тч уважаемый ТС протестируйте производительность sqllite, найдёте себе нового кумира)
23 мар 10, 19:17    [8521941]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Анонимный_тестер
Guest
Т.е. низкая производительность Оракла по сравнению с Аксесом - это так и надо что ли?

Я надеялся, с вашей помощью понять, в чем дело, что я делаю неправильно, или что работает неправильно, но этого пока нет.
23 мар 10, 20:09    [8522078]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Last1Cmen
Member

Откуда:
Сообщений: 30210
Анонимный_тестер
Т.е. низкая производительность Оракла по сравнению с Аксесом - это так и надо что ли?

Я надеялся, с вашей помощью понять, в чем дело, что я делаю неправильно, или что работает неправильно, но этого пока нет.


производительность 3х строк ?

вам уже намекнули что попробуйте обработать десяток шестизнаков в записях и потом судите
23 мар 10, 22:52    [8522434]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2559
Анонимный_тестер
Т.е. низкая производительность Оракла по сравнению с Аксесом - это так и надо что ли?

Я надеялся, с вашей помощью понять, в чем дело, что я делаю неправильно, или что работает неправильно, но этого пока нет.


Поддержка целостности данных небесплатна, и потому в ряде случаев Access просто обязан быть быстрее. Хотя это и не означает, что Oracle всегда будет проигрывать в равных условиях. Вопрос ведь ещё в том, какие это равные условия. Возьмите большое количество одновременно работающих юзеров и/или сложные запросы на большом объёме данных и/или серьёзное серверное железо с большим процессорных ядер, большим количеством ОЗУ и 64бит ОС...
23 мар 10, 23:28    [8522504]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
Sergey Orlov
Member

Откуда: СПб
Сообщений: 4510
Анонимный_тестер
Т.е. низкая производительность Оракла по сравнению с Аксесом - это так и надо что ли?
Я надеялся, с вашей помощью понять, в чем дело, что я делаю неправильно, или что работает неправильно, но этого пока нет.

Чем вы слушаете и читаете, Вам уже сказали, что эти продукты предназначены для разных условий эксплуатации... Кроме всего прочего, на ваших тестах любая поделка, имеющая в качестве основы плоский файл, сделает и access и oracle...
23 мар 10, 23:36    [8522513]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
-2-
Member

Откуда:
Сообщений: 15330
Sergey Orlov
Кроме всего прочего, на ваших тестах любая поделка, имеющая в качестве основы плоский файл, сделает и access и oracle...
В дополнение к моему предыдущему тесту
user@host:~> time for ((i=1; i<=1000000; i++)); do printf "$i\t123456" >> BigDatabase; done

real    0m30.251s
user    0m21.149s
sys     0m8.937s

user@host:~>  time awk 'BEGIN{for(i=1;i<=1000000;i++) print i"\t123456" >> "BigDatabase2"}'

real    0m1.617s
user    0m1.556s
sys     0m0.060s
24 мар 10, 02:00    [8522679]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
Анонимный_тестер
Всю жизнь мечтал поработать с Oracle, т.к. много слышал хорошего об этой СУБД и даже немного с ней познакомился в ВУЗе.

Прально делали что мечтали. Я тоже перед Ораклом на Аксцессе сидел и тоже мечтал.
Оракл при записях данных в БД может на виндах тормозить, например, из-за Каспера.
У Него да есть настройки. Но и счас мне приходится готовить отчет в ПФ, который на Аксе (я давно налабал и до сих пор не сменили они систему). Ну я предпочел рядом поставить Оракл, прилепить его к Аксу, и выполнять запросы на Оракловом, потому что Оракловый диалек SQL покруче. Вплоть до того что на Оракле моно все еще SQL обойтись там где на Аксе нуно Васика привлекать. Да призводиительность при чтении. Так Аксцессный сложный запрос к небольшому обему данных может уйти минут на 20, а Оракловый крутит неск сек.
Правда, берите ЕЕ редакцию - она для изучения бесплатна. Там Вы может сравнить производительность на чтение во всей красе. Там есть секционирование. Представьте таблу за много месяцев, лет, хде скажем 20 млн записей за месяц, соответсвенно 120 млн за год. И вот Оракл моно настроиь, что он за любой месяц буит считывать тока 20 млн с диска (как буд-то за кажный месяц тока одна табла на Аксцессе), но табла одна у него, а в синтаксис SQL обычный. А на Аксае Так не получится.
Оракл када записываеит, старается минимизировать объем на диске - ище свободные места, чтобы заполнить. Ить главное для БД чтение - извлечение инфы собсно для чего БД создают.
Но моно поставит хинт , моно в табле сказать как заполнять блоки. Ну ускорится запись, но файл пошишрше будет, читать помедленнее с него будет.
24 мар 10, 08:37    [8522911]     Ответить | Цитировать Сообщить модератору
 Re: Наперегонки с Access  [new]
SergINI
Member

Откуда: Нью-Васюки
Сообщений: 6787
Access достаточно быстрая СУБД и в однопользовательском порвёт большинство клиент-серверных СУБД по следующим причинам:
1. Oracle ведёт журналирование транзакций, access нет. Можно кстати запрос в oracle запустить в режиме nolog.
2. В Oracle более сложный процесс управления памятью и куча процессов, которые сами по себе прожорливы и жрут ресурсы системы просто для того, чтобы Orаcle работал.
3. В оракле постоянно идёт обращение к словарю данных System tablespace, который сам по себе представляет довольно объёмную БД и поэтому говорить о равных условиях не приходится.
4. Для чистоты эксперимента нужно ещё в Windows отключить кэширование файлов, так как Oracle этот механизм не использует и вставились данные - это ещё не означает, что они физически записались на диск.
31 мар 10, 12:07    [8557995]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить