Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Помогите выбрать СУБД  [new]
redstar
Member

Откуда:
Сообщений: 7
Назначение СУБД: быстрая память для приложения
Работа: 10 SQL запросов выполняются в непрерывном цикле
Требования к СУБД: требование одно - быстродействие, быстродействие и еще раз быстродействие

Ограничения:
1. Приложение выполняется на машине с СУБД - локальная
2. Однопользовательская
3. Малый размер строки
4. Небольшое (5) количество таблиц
5. Без транзакций

На мускуле (v4,v5 MyISAM), при достижении 100 000 строк скорость падает на порядок по сравнению со стартовой (со 100 итераций в секунду до 10).
15 дек 05, 17:56    [2176449]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Ц4
Guest
а пример запроса можно глянуть?
15 дек 05, 18:01    [2176482]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Dogen
Member

Откуда: Гондурас
Сообщений: 2976
redstar

На мускуле (v4,v5 MyISAM), при достижении 100 000 строк скорость падает на порядок по сравнению со стартовой (со 100 итераций в секунду до 10).

Индексы?..
Размер строки в таблице (размер самой таблицы)?..
15 дек 05, 18:03    [2176496]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
guest_20040621
Guest
> при достижении 100 000 строк скорость падает на порядок по сравнению со
> стартовой (со 100 итераций в секунду до 10).

Не пробовали MySQL не на десктопе запускать?
15 дек 05, 18:05    [2176513]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
redstar
Member

Откуда:
Сообщений: 7
Размер строки 30-60b (байт!)
Индексы на все что есть в where и нечасто апдетится. По логам: кэшированных запросов нет, запросов неиндексированных данных нет.
Сами запросы - ничего умного.

Пример запросов - лог одного такта:
update refren set s0=GREATEST(s0,1.0) where id=1080
select r.id, r.id_prev from rel r where r.type=0 and r.id_prev=435132 and r.id_src=1088 and r.id_dict=1080 order by w desc limit 1
update rel set w=GREATEST(0.5,POW(w, 0.8)), f1=1 where id=453746
select w from rel where id=453746
select id_dict from rel where type=1 and id_prev=435132 and id_src=1088
update rel set w=GREATEST(0.5,POW(w, 0.8)) where type=1 and id_prev=435132 and id_src=1088
update refren set s1=GREATEST(s1,1.0) where id=355402
select sum(s0) from refren where s0>0.1 and lev=2
update refren f, refren f1, coord c set f.s0=f.s0+f1.s0*c.w*1.0 where f1.lev=2 and f1.id=c.id_coord and f.id=c.id_ref and f1.s0*c.w>0.1
select * from refren where lev>0 and s1>0.1 and s1>=s0 order by s1 desc limit 1
insert into internal(ref,s0)values(355402,1.0)
select lev from refren where id=355402
update refren set s0=s0*2.0,k=k+(1.9-k)*0.1 where id=355402
update refren set s1=GREATEST(s1,s0*0.7),s0=0 where s0>0.1
update internal set s1=GREATEST(s1,s0*0.7),s0=0 where s0>0.1

Падение быстродействия в 10 раз когда база выходит на объем<10 Мб - нормальное явление в мире СУБД? (или в мире mysql)
15 дек 05, 18:28    [2176644]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Dogen
Member

Откуда: Гондурас
Сообщений: 2976
redstar

Сами запросы - ничего умного.

Сотни апдейтов подряд - реально ничего умного.
15 дек 05, 18:50    [2176730]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Если много инсертов и апдейтов - значит нужна СУБД которая может статистику собирать в REALTIME, таких много.
Очень важен дизайн дисковой подсистемы. Лог - обязательно на другой диск - не там где данные, и по возможности даже на RAID0.
Неплохо было бы разложить индексы/данные по разным областям памяти (чтобы небыло вымывания страниц).
Посмотреть сколько памяти отведено под сортировку.Возможно нужно увеличить.
Страницы базы сделать как можно меньше. т.е. хотябы 4K и ни в коем случае не больше.
Рассмотрите возможность сократить количество индексов.
Легче править три-четыре составных индекса чем колбасить десять простых.
(I/O всяко меньше будет)

Скорее хватает пропускной способности I/O - это ваша болезнь. Решение - перепроектирование.
15 дек 05, 19:04    [2176763]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Выбегалло
Member

Откуда: Scottsdale, AZ, USA
Сообщений: 3823
ANTs, TopTen. Первый просто летает, если все данные вмещаются в память.

В таком вот аксепте
15 дек 05, 22:07    [2177060]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Sergey Ch
Member

Откуда: Благовещенск
Сообщений: 8894
redstar
Падение быстродействия в 10 раз когда база выходит на объем<10 Мб - нормальное явление в мире СУБД? (или в мире mysql)

Нет, это только для СУБД начального класса...

Попробуйте MS Visual FoxPro 8.0 - разницу увидите сразу, только не забудьте проиндексировать поля, которые участвуют в выражении WHERE...

До 2Gb все просто должно "летать".... После - надо использовать некторые хитрости Но будет тоже очень быстро...

Good luck!
16 дек 05, 10:34    [2177787]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Sergey Ch
Нет, это только для СУБД начального класса...


Это шо за СУБД такие ? Давно они в школу пошли ???
FoxPro то точно пятиклассник-третьегодник
16 дек 05, 10:40    [2177818]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Sergey Ch
Member

Откуда: Благовещенск
Сообщений: 8894
Gluk (Kazan)
Это шо за СУБД такие ? Давно они в школу пошли ???
FoxPro то точно пятиклассник-третьегодник

Звездные войны в другом топике

А здесь ответы на вопросы автора и методологическая помощь...

P.S. Ну а FoxPro очень быстро работает на вставку новых данных, особенно при условиях описанных автором. Если не верите, то можете провести эксперимент... Good luck!
16 дек 05, 10:52    [2177894]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Dogen
Member

Откуда: Гондурас
Сообщений: 2976
Sergey Ch

P.S. Ну а FoxPro очень быстро работает на вставку новых данных, особенно при условиях описанных автором. Если не верите, то можете провести эксперимент... Good luck!

Автор апдейтит данные, не путайте мухи с котлетами. Ни одна OLTP (или похожая система) не работает с апдейтом данных, только вставка новых и изредка апдейт старых данных. Из-за скорости в том числе.
16 дек 05, 11:05    [2177958]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Sergey Ch
Member

Откуда: Благовещенск
Сообщений: 8894
Dogen
Автор апдейтит данные, не путайте мухи с котлетами. Ни одна OLTP (или похожая система) не работает с апдейтом данных, только вставка новых и изредка апдейт старых данных. Из-за скорости в том числе.

Вот я и написал о том, что FoxPro идеально подойдет для задачи спрашивающего быстро вставить много данных...

P.S. Приношу извиненеия, если кто-то что-то понял неправильно. Данное мое мнение является сугубо личным, основанном на большом опыте разработки программ по желанию заказчика и естественно не является абсолютной истиной. Просто каждое мнение имеет право на жизнь...
16 дек 05, 12:34    [2178536]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Sergey Ch
P.S. Приношу извиненеия, если кто-то что-то понял неправильно. Данное мое мнение является сугубо личным, основанном на большом опыте разработки программ по желанию заказчика и естественно не является абсолютной истиной. Просто каждое мнение имеет право на жизнь...


Вот сразу-бы так и не было бы никаких "Звездных войн"
16 дек 05, 12:40    [2178598]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67415
Блог
redstar

Знаете, я бы сказал, что под данную конкретную задачу лучше обойтись вообще без СУБД. В любом случае, похоже, Вам стоит смотреть в сторону In-memory СУБД - например TimesTen http://www.oracle.com/timesten/index.html
16 дек 05, 12:46    [2178645]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
redstar
Member

Откуда:
Сообщений: 7
Коллеги, cпасибо за помощь, не знал что СУБД плохо с апдейтами дружат.
ANT долго думает после регистрации, наверное его смутил телефон «007».
FoxPro оставляет некий налет студенчества, но обязательно попробую.
Написал несложный тест для TimesTen и MySql: 45000 инсертов и столько же апдейтов. Вот результат выполнения в сек:
Timesten 88
MyISAM 12
MyMemory 11
Конечно такой тест не является показательным но разница в 8 раз…
По всему выходит что мускл здесь самый быстрый для данной задачи?
gardenman, а в mysql размер страницы регулируется?
17 дек 05, 10:29    [2181816]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
redstart
Guest
A ты пробовал рабоать с DB2/Informix/MSSQL/Sybase/Oracle??? Опять же что у тебя за железо???
17 дек 05, 16:42    [2182214]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Sergey Ch
Member

Откуда: Благовещенск
Сообщений: 8894
Проверил на "студенческом" FoxPro вставку в 2 таблицы 500,000 записей - 18 sec, объем полученных данных всего 24Mb:
CLOSE DATABASES all
OPEN DATABASE ('TEST.DBC') EXCLUSIVE
PACK DATABASE
SET SAFETY OFF 


IF FILE('REL.DBF')
  DROP TABLE REL
ENDIF
IF FILE('REFEREN.DBF')
  DROP TABLE REFEREN
ENDIF


CREATE TABLE rel ( id i autoinc PRIMARY KEY , id_prev i,id_src i,id_dict i, w n(5,3))
SELECT rel
INDEX ON id_src TAG id_src ADDITIVE
INDEX ON id_dict TAG id_dict ADDITIVE
INDEX ON id_dict TAG id_dict ADDITIVE


CREATE TABLE referen (lev i, s0 n(5,3))


m.ltbegin=DATETIME()
FOR i=1 TO 500000
  insert into rel (id_prev,id_src,id_dict, w) values (int(RAND()*1000),int(RAND()*1000),int(RAND()*1000),round(RAND()*100,2))
  INSERT INTO referen (lev, s0) VALUES (rel.id, round(RAND()*100,2))
ENDFOR 

? 'Time, sec: ',DATETIME() - m.ltbegin
CLOSE DATABASES 
18 дек 05, 16:21    [2183317]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
shuklin
Member

Откуда: Харьков
Сообщений: 799
redstar
Назначение СУБД: быстрая память для приложения
Работа: 10 SQL запросов выполняются в непрерывном цикле
Требования к СУБД: требование одно - быстродействие, быстродействие и еще раз быстродействие

Ограничения:
1. Приложение выполняется на машине с СУБД - локальная
2. Однопользовательская
3. Малый размер строки
4. Небольшое (5) количество таблиц
5. Без транзакций


Есть у меня знакомый redstar, Ром, ежель это ты и тебя опять на нейронки потянуло - бросай SQLи и переходи на нормальные ОБД )))
20 дек 05, 18:21    [2191744]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Выбегалло
Member

Откуда: Scottsdale, AZ, USA
Сообщений: 3823
Dogen
Sergey Ch

P.S. Ну а FoxPro очень быстро работает на вставку новых данных, особенно при условиях описанных автором. Если не верите, то можете провести эксперимент... Good luck!

Автор апдейтит данные, не путайте мухи с котлетами. Ни одна OLTP (или похожая система) не работает с апдейтом данных, только вставка новых и изредка апдейт старых данных. Из-за скорости в том числе.


Кто вам такую глупость сказал ?
20 дек 05, 19:18    [2191982]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Dogen
Member

Откуда: Гондурас
Сообщений: 2976
Выбегалло
Dogen
Sergey Ch

P.S. Ну а FoxPro очень быстро работает на вставку новых данных, особенно при условиях описанных автором. Если не верите, то можете провести эксперимент... Good luck!

Автор апдейтит данные, не путайте мухи с котлетами. Ни одна OLTP (или похожая система) не работает с апдейтом данных, только вставка новых и изредка апдейт старых данных. Из-за скорости в том числе.


Кто вам такую глупость сказал ?

Своим умом дошел. Кроме Вас, никто почему-то не возражает
21 дек 05, 11:51    [2193567]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Я возражаю.
21 дек 05, 11:53    [2193589]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32886

Привет, Dogen!
Ты пишешь:

Dogen
Выбегалло
Кто вам такую глупость сказал ?

D> Своим умом дошел. Кроме Вас, никто почему-то не возражает

На каждый твой перл реагировать, нафик надо.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3

21 дек 05, 12:09    [2193720]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
AlexTheRaven
Member

Откуда: Москва
Сообщений: 879
redstar
Ограничения:
1. Приложение выполняется на машине с СУБД - локальная
2. Однопользовательская
3. Малый размер строки
4. Небольшое (5) количество таблиц
5. Без транзакций

А нужна ли тогда СУБД вообще? Нельзя ли обойтись просто многомерными массивами? Ну да, SQL-удобная штука, но затраты ресурсов на его оптимизацию/компилляцию могут себя не оправдывать, даже если используется не отдельное приложение, а что-нибудь наподобие библиотеки SQLite. Или действительно стоит использовать FoxPro, но это довольно специализированный язык, многое в нём реализовывать непривычно/неудобно...
21 дек 05, 12:52    [2193974]     Ответить | Цитировать Сообщить модератору
 Re: Помогите выбрать СУБД  [new]
redstar
Member

Откуда:
Сообщений: 7
shuklin
Есть у меня знакомый redstar, Ром, ежель это ты и тебя опять на нейронки потянуло - бросай SQLи и переходи на нормальные ОБД )))

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

2AlexTheRaven
Можно взять массив, построить хэш таблицу и т.д. - получим in-memory table
21 дек 05, 13:28    [2194204]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить