powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Наперегонки с Access
25 сообщений из 27, страница 1 из 2
Наперегонки с Access
    #36535835
Всю жизнь мечтал поработать с Oracle, т.к. много слышал хорошего об этой СУБД и даже немного с ней познакомился в ВУЗе.
Выдалось свободное время, установил Oracle 10g XE и начал тестировать.
Создал простейшую табличку с числовым автоинкрементным ключом и числовым полем данных. Ввел первую запись и начал запросом удваивать количество записей. На том же компьютере повторил эти же операции в Access XP. Результаты:
Oracle: 32к инсертов за 12 секунд.
Access: 1М инсертов за 19 секунд.
- Access в 19,7 раз быстрее.

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

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

Заранее спасибо за ответы.
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36535846
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анонимный_тестер,

ну нажмите резет чтоли, когда аксес будет миллионами строк ворочать
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36535849
Андрей ПанфиловАнонимный_тестер,

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

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

Т.е. для проекта с не особо ценными данными, но требующего высокой производительности по БД, Оракл подходит плохо?
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36535868
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анонимный_тестер,

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

Надо показывать структуры данных и запросы.
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36535884
Siemargl, вот SQL коды
Структура таблицы в Oracle
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
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:
Код: plaintext
INSERT INTO tbltest1 SELECT * FROM tbltest1;
Аксес:
INSERT INTO tbltest1 ( DATA1 )
SELECT tbltest1.DATA1
FROM tbltest1;
Код для обновления
Oracle:
Код: plaintext
UPDATE tblTEST1 SET DATA1= 200 ;
Аксес:
UPDATE tbltest1 SET tbltest1.DATA1 = 200;

Только что пришла в голову умная мысля об отсутствии индекса в Оракле по ключевому полю, что наверняка тормозит проверку CONSTRAINT "TBLTEST1_PK" PRIMARY KEY ("KEY") при добавлении.
Но апдейты-то почему такие медленные?
А индекс я сейчас добавлю....
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36535885
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анонимный_тестерСоздал простейшую табличку с числовым автоинкрементным ключом ...В оракле автоинкремент сделан триггером? Понимаю, что вставка доставляет удовольствие... но вставка строки вставке строк рознь:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
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 одновременно тремя пользователями?
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36535886
Нет, индексы для PK и в Оракле, и в Аксесе создались автоматически. Умная мысля оказалась не умная, и вообще пришла в голову не вовремя.

Так что я нуждаюсь в ваших разъяснениях...
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36535890
-2-, спасибо за ваш ответ.

Т.е. надо пользоваться не SQL, а именно PL/SQL. Только его использовании достигается высокая производительность, так?
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36535895
-2-, прокомментируйте, пожалуйста, заодно и ситуацию с обновлениями.

Кстати, вставки-то у вас не такие, как были у меня по смыслу. Вы вставляете одно и то же значение, а я вставляю содержимое записей, которые лишь в примере одинаковые, но в общем случае содержат разные значения.
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36535898
Кроме того, не сравнивайте свои сотни милисекунд с моими десятками секунд, т.к. опыты я провожу на 1.6 ноутбучном селероне, а у Вас какое железо, я не знаю.

Извините за 4 сообщения подряд, объединил бы их в одно, будь у меня такая возможность.
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36535905
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анонимный_тестер,

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

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

Приведите конфигурацию бука, есть подозрение, что катастрофически мало памяти.
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36535909
Celeron M 1.6Ghz кеш по-селероновски маленький, точно не знаю.
RAM 768 минус 64 на видео = 704Мб DDR2 533Mhz
Винт относительно медленный: 5400, 20-22Мб/сек - реальная скорость чтения/записи (не одновременно).

Активных задач помимо СУБД, потребляющих процессорное время, в процессе эксперимента не выполнялось. Естественно, запросы на разных СУБД выполнялись не параллельно, а последовательно.
При вставке записей заметной перекачки страниц между жестким диском и ОЗУ не наблюдалось. Могу ради интереса повторить эксперименты с включенным perfmon (но уже завтра), чтобы удостовериться в том, что перекачка страниц не шла.
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36535937
Анонимный_тестерЗаранее спасибо за ответы.Друже, ты не поверишь - на ровном гладком асфальте любая легковушка не напрягаясь уделает по скорости любой карьерный самосвал.
Но стОит сменить условия: уйти с асфальтированного трека на раздолбанные горные грунтовые дороги как всё изменится: там любой карьерный самосвал в сопли уделает любую легковушку. А если в задачи обоим испытуемым вменить ещё и перевозку с пункта А в пункт В 300т полезного груза в виде горной каменной породы, то карьерный самосвал сделает это легко и непринужденно, за одну ходку. А уж чего будет с твоей легковушкой, если на неё нагрузить 300т груза - мне и представить-то себе страшно.


...
Рейтинг: 0 / 0
Наперегонки с Access
    #36536059
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анонимный_тестер,

0. Характеристики компа и файл параметров оракла покажите.
1. Аксес нелимитирован по использованию памяти, так что сожрёт всю не напрягаясь.
2. По умолчанию в аксесе автокоммит, как часто вы делали коммит в оракловом тесте?
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36536069
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анонимный_тестер
2) За что тогда любят Оракл? Какие его сильные стороны, если высокой производительности он не показывает? Или производительность его проявляется только на терабайтных БД?

Это вопрос типа "Порше ездит быстрее Белаза. Так почему в промышленности так любят использовать Белазы?" ...Отвечать надо или так понятно?
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36536097
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анонимный_тестерИзвините за 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".
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36537381
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы бы ещё оракл на кпк поставили

ps
тест у вас неравноценный. акцесс - файловая база данных.
про минимальные требования оборудования для оракла почитайте
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36538047
балалайка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в структурированые файлы ищо быстрее писать можно, тч уважаемый ТС протестируйте производительность sqllite, найдёте себе нового кумира)
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36538117
Т.е. низкая производительность Оракла по сравнению с Аксесом - это так и надо что ли?

Я надеялся, с вашей помощью понять, в чем дело, что я делаю неправильно, или что работает неправильно, но этого пока нет.
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36538299
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анонимный_тестерТ.е. низкая производительность Оракла по сравнению с Аксесом - это так и надо что ли?

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

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

вам уже намекнули что попробуйте обработать десяток шестизнаков в записях и потом судите
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36538335
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анонимный_тестерТ.е. низкая производительность Оракла по сравнению с Аксесом - это так и надо что ли?

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

Поддержка целостности данных небесплатна, и потому в ряде случаев Access просто обязан быть быстрее. Хотя это и не означает, что Oracle всегда будет проигрывать в равных условиях. Вопрос ведь ещё в том, какие это равные условия. Возьмите большое количество одновременно работающих юзеров и/или сложные запросы на большом объёме данных и/или серьёзное серверное железо с большим процессорных ядер, большим количеством ОЗУ и 64бит ОС...
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36538341
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анонимный_тестерТ.е. низкая производительность Оракла по сравнению с Аксесом - это так и надо что ли?
Я надеялся, с вашей помощью понять, в чем дело, что я делаю неправильно, или что работает неправильно, но этого пока нет.
Чем вы слушаете и читаете, Вам уже сказали, что эти продукты предназначены для разных условий эксплуатации... Кроме всего прочего, на ваших тестах любая поделка, имеющая в качестве основы плоский файл, сделает и access и oracle...
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36538424
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey OrlovКроме всего прочего, на ваших тестах любая поделка, имеющая в качестве основы плоский файл, сделает и access и oracle...В дополнение к моему предыдущему тесту
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36538523
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анонимный_тестерВсю жизнь мечтал поработать с Oracle, т.к. много слышал хорошего об этой СУБД и даже немного с ней познакомился в ВУЗе.

Прально делали что мечтали. Я тоже перед Ораклом на Аксцессе сидел и тоже мечтал.
Оракл при записях данных в БД может на виндах тормозить, например, из-за Каспера.
У Него да есть настройки. Но и счас мне приходится готовить отчет в ПФ, который на Аксе (я давно налабал и до сих пор не сменили они систему). Ну я предпочел рядом поставить Оракл, прилепить его к Аксу, и выполнять запросы на Оракловом, потому что Оракловый диалек SQL покруче. Вплоть до того что на Оракле моно все еще SQL обойтись там где на Аксе нуно Васика привлекать. Да призводиительность при чтении. Так Аксцессный сложный запрос к небольшому обему данных может уйти минут на 20, а Оракловый крутит неск сек.
Правда, берите ЕЕ редакцию - она для изучения бесплатна. Там Вы может сравнить производительность на чтение во всей красе. Там есть секционирование. Представьте таблу за много месяцев, лет, хде скажем 20 млн записей за месяц, соответсвенно 120 млн за год. И вот Оракл моно настроиь, что он за любой месяц буит считывать тока 20 млн с диска (как буд-то за кажный месяц тока одна табла на Аксцессе), но табла одна у него, а в синтаксис SQL обычный. А на Аксае Так не получится.
Оракл када записываеит, старается минимизировать объем на диске - ище свободные места, чтобы заполнить. Ить главное для БД чтение - извлечение инфы собсно для чего БД создают.
Но моно поставит хинт , моно в табле сказать как заполнять блоки. Ну ускорится запись, но файл пошишрше будет, читать помедленнее с него будет.
...
Рейтинг: 0 / 0
Наперегонки с Access
    #36552495
SergINI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access достаточно быстрая СУБД и в однопользовательском порвёт большинство клиент-серверных СУБД по следующим причинам:
1. Oracle ведёт журналирование транзакций, access нет. Можно кстати запрос в oracle запустить в режиме nolog.
2. В Oracle более сложный процесс управления памятью и куча процессов, которые сами по себе прожорливы и жрут ресурсы системы просто для того, чтобы Orаcle работал.
3. В оракле постоянно идёт обращение к словарю данных System tablespace, который сам по себе представляет довольно объёмную БД и поэтому говорить о равных условиях не приходится.
4. Для чистоты эксперимента нужно ещё в Windows отключить кэширование файлов, так как Oracle этот механизм не использует и вставились данные - это ещё не означает, что они физически записались на диск.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Наперегонки с Access
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]