powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Кто быстрее выполнит простой запрос
25 сообщений из 78, страница 1 из 4
Кто быстрее выполнит простой запрос
    #34040304
Thats right!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех участников форума!

У меня назрел такой вопрос. Есть простая табличка из двух полей
ID тип int
Name тип varcar(30)

Так вот суть вопроса, какая из СУБД справиться с этой задачей быстрее. Запрос к таблице такого рода SELECT * FROM tbl WHERE name='Что то'.
Тачка, на которой это будет - Pentium D, SCSI RAID 1 (miror, причем программный). Операционная система - что-нибудь из никсов. Плотность запросов ~30000-50000 в секунду. Размер таблицы 3 млн. записей. Размер порядка 200 мегабайт.
Есть одно но. СУБД должна быть бесплатно, хоть оракл, но бесплатный, его ограничений по размеру базы должно хватить. Конечно, ограничение по процессору и памяти не радуют, но всё же.

И сразу второй вопрос, кто имел дело с бесплатным ораклом? Какие его плюсы и насколько он урезан по сравнению с нормальным ораклом.

Я бы мог протестить всё самостоятельно, но хотелось бы узнать в каком ключе двигаться и что тестить(не тратить же время на тестирование всех СУБД, к сожалению время не позволяет). Кроме того, практика всегда отличается от тестов, поэтому рад буду выслушать все ваши мнения.
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34040316
andsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thats right!Приветствую всех участников форума!

У меня назрел такой вопрос. Есть простая табличка из двух полей
ID тип int
Name тип varcar(30)

Так вот суть вопроса, какая из СУБД справиться с этой задачей быстрее. Запрос к таблице такого рода SELECT * FROM tbl WHERE name='Что то'.
Тачка, на которой это будет - Pentium D, SCSI RAID 1 (miror, причем программный). Операционная система - что-нибудь из никсов. Плотность запросов ~30000-50000 в секунду. Размер таблицы 3 млн. записей. Размер порядка 200 мегабайт.
На однопроцессорной машине - никакая.
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34040326
Thats right!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PENTIUM D - у него два ядра, следовательно два проца.
Или и это не хватит? Тогда вопрос. как можно разрулить кластер на двух тачках похожей конфигурации?
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34040357
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thats right!Запрос к таблице такого рода SELECT * FROM tbl WHERE name='Что то'.
Для такого вида запросов в таком количестве голая СУБД - не лучший выбор, слишком много лишнего навешано. Лучше закешировать эти 200 мегов в памяти, в хэше/массиве/итп и выдавать без всяких селектов.

На тему бесплатного оракла.... скажем так, ничего существенного с точки зрения описанной задачи там не отрезано.
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34040362
Thats right!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer Thats right!Запрос к таблице такого рода SELECT * FROM tbl WHERE name='Что то'.
Для такого вида запросов в таком количестве голая СУБД - не лучший выбор, слишком много лишнего навешано. Лучше закешировать эти 200 мегов в памяти, в хэше/массиве/итп и выдавать без всяких селектов.

Просто можно было кешить всё на "клиенском" приложении, но проблема в том, что с этой базой работают несколько независимых серверов, а писать синхронизацию всего этого добра.... Неужели на уровне СУБД нельзя такое обеспечить?
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34040368
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thats right!Просто можно было кешить всё на "клиенском" приложении,
Я бы скорее приписал что-нибудь сбоку, не сервер приложений, а просто "небольшой сервер ответа вот на этот персональный вопрос". И пусть все спрашивают именно у него, а он будет возвращать данные из кэша и слушать оповещения БД об изменении данных.

Thats right!Неужели на уровне СУБД нельзя такое обеспечить?
Можно. Но при этом я бы ожидал потерь в производительности. Насколько заметных - не готов сходу оценить. По идее, самыми быстрыми в этом случае должны быть in-memory databases, затем - обычные из расчета "чем проще, тем лучше".

Но с чем сравниваем - сравниваем с примерно мегабайтным массивом указателей на строки, для которого мы можем выбрать логику хранения/доступа исходя из особенностей данных (скажем, если id непрерывные, будет обычный индексированный массив - скорость выборки просто непревзойденная).
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34040450
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пару лет назад на двухпроцессорной машине с oracle 9i удавалось получить похожий рейт.
Условия теста похожи - около 8 млн. записей, обращения по первичному ключу.
Пул сессий был что-то около трех десятков, вся таблица была полностью поднята в buffer cache.
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34040884
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous Пару лет назад на двухпроцессорной машине с oracle 9i удавалось получить похожий рейт.
Условия теста похожи - около 8 млн. записей, обращения по первичному ключу.
Пул сессий был что-то около трех десятков, вся таблица была полностью поднята в buffer cache.
30000-50000 в секунду? А сколько типичное кол-во выбираемых строчек? Если 1-4, то могу поверить.
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34040931
Thats right!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Funny_Falcon andrey_anonymous Пару лет назад на двухпроцессорной машине с oracle 9i удавалось получить похожий рейт.
Условия теста похожи - около 8 млн. записей, обращения по первичному ключу.
Пул сессий был что-то около трех десятков, вся таблица была полностью поднята в buffer cache.
30000-50000 в секунду? А сколько типичное кол-во выбираемых строчек? Если 1-4, то могу поверить.

Суть проста, надо выбрать ID слова и всё, количество возвращаемых записе - одна, так как слова в поле Name уникальны.

А если тип HEAP в мускуле для этой цели использовать? И если как вариант подойдет, то как лучше сбрасывать данные из HEAP в Innobd например, как лучше провести синхронизацию? Есть у кого-нибудь подобная практика?
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34040996
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thats right! Funny_Falcon andrey_anonymous Пару лет назад на двухпроцессорной машине с oracle 9i удавалось получить похожий рейт.
Условия теста похожи - около 8 млн. записей, обращения по первичному ключу.
Пул сессий был что-то около трех десятков, вся таблица была полностью поднята в buffer cache.
30000-50000 в секунду? А сколько типичное кол-во выбираемых строчек? Если 1-4, то могу поверить.

Суть проста, надо выбрать ID слова и всё, количество возвращаемых записе - одна, так как слова в поле Name уникальны.

А если тип HEAP в мускуле для этой цели использовать? И если как вариант подойдет, то как лучше сбрасывать данные из HEAP в Innobd например, как лучше провести синхронизацию? Есть у кого-нибудь подобная практика?Можно попробовать MySQL cluster поднять. он затаскивает всю БД в память и оперирует in-memory.

Может быть и вытянет.
+ это транзакционный движок и не нужно мучаться со "сбрасывать данные из HEAP в Innobd", т.к. сохраняет данные/логи на винте.
НО cluster предназначен для "постоянной доступности" данных, и скорость не основной его плюс.

Нужно тестить в общем.
ЗЫ а действительно нужно 30к - 50к запросов в сек НА ОДИН сервер. Возможно достаточно будет поднять несколько СУБД разгрузив их, связать через один мастер - много подчиненных. Управление и наполнение идет через мастера, запросы на подчиненных.
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34041024
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thats right!
Суть проста, надо выбрать ID слова и всё, количество возвращаемых записе - одна, так как слова в поле Name уникальны.

Ну тогда не нужен Вам никакой SQL. Берете например GT.M и весь Ваш запрос превращается в один оператор
Код: plaintext
1.
s ID=$g(^TABLE(name))
При указанном объеме оперативки на сервере поставить гиг, база вся ляжет в кэш, и летать будет, никто не догонит :-)
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34041236
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LittleCat Thats right!
Суть проста, надо выбрать ID слова и всё, количество возвращаемых записе - одна, так как слова в поле Name уникальны.

Ну тогда не нужен Вам никакой SQL. Берете например GT.M и весь Ваш запрос превращается в один оператор
Код: plaintext
1.
s ID=$g(^TABLE(name))
При указанном объеме оперативки на сервере поставить гиг, база вся ляжет в кэш, и летать будет, никто не догонит :-)

также годится MSM, CACHE, - платные
M3-LITE - бесплатная

принцип тот же что и GT.M

но все под Windows
GT.M - под LINUX
в любом варианте летать будет на 220 %
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34041373
Thats right!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм... А GT.M под линукс не бесплатная? И как с ней работать из с++?
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34041428
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thats right!Хм... А GT.M под линукс не бесплатная? И как с ней работать из с++?
Под Linux как раз GT.M бесплатный, и исходники на sourceforge лежат :-) А как работать из С++, это уже дело вкуса, вариантов много, нужно доку читать...
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34041489
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GTM_UNIX-Prog-Manual-4.4.pdf глава 11 раздел Calls from External Routines: Call-Ins
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34041695
Thats right!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LittleCat Thats right!Хм... А GT.M под линукс не бесплатная? И как с ней работать из с++?
Под Linux как раз GT.M бесплатный, и исходники на sourceforge лежат :-) А как работать из С++, это уже дело вкуса, вариантов много, нужно доку читать...

Уже скачал, просто супер(я про форум, GM.T пока не юзал, ибо только скачал). Тогда такой вопрос, просто я не разу не работал с нереляционными базами данных, но давно искал инфу о них, так вот вопрос.
Могут ли нереляционные базы данных выполнять запросы аналогичные запросам с LEFT JOIN'ом в мускуле? И насколько это быстрее работает чем в мускуле. вообщем выборка что то вроде SELECT * FROM tbl AS tbl1 LEFT JOIN tbl AS tbl2 ON tbl1.id_name=tbl2.id_name WHERE tbl1.id_name1='25' and tbl2.id_name1='23'. Вообщем суть в том, что выборка идет из одной таблицы, но с извращением:)
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34042094
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thats right! Вообщем суть в том, что выборка идет из одной таблицы, но с извращением:)
Ну так тоже не страшно, сделаем индексацию в том же глобале, вот пример создания одной записи (при условии что ID и name не пересекаются)
Код: plaintext
s ^TABLE(name)=ID,^TABLE(ID)=name
Ну а дальше выборка
Код: plaintext
 if ^TABLE( 23 )=^TABLE( 25 ) w !,"Found ",^TABLE( 23 ) 
Результат тоже будет мгновенный :-)
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34042463
Thats right!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LittleCatРезультат тоже будет мгновенный :-)

Тогда вопрос, как говорится, на засыпку. Как поведет себя GT.M на базе размером в 20 гиг , где количество записей от 200 млн. на той же тачке, о которой я говорил в первом посте. Запросов разумеется гораздо меньше, макс ~3 в секунду.
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34042524
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thats right!
Тогда вопрос, как говорится, на засыпку. Как поведет себя GT.M на базе размером в 20 гиг , где количество записей от 200 млн. на той же тачке, о которой я говорил в первом посте. Запросов разумеется гораздо меньше, макс ~3 в секунду.
ИМХО без проблем, если учесть, что на нем строят банковские системы и системы автоматизации крупных госпиталей. Есть подозрение, что и 200 гиг не будут проблемой....
PS С бОльшей уверенностью рекомендовал бы Cache, но вопрос был про бесплатную базу ;-)
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34042792
Thats right!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LittleCat, а вы можете сбросить кусок кода готовой программы, мне кжется так будет легче разобраться :). Маленький примерчик ;)
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34042794
Зл0й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А транзакции поддерживать надо или нет? Если не надо - просто строиться хэш-таблица в оперативной памяти, и вся любовь. СУБД при таком раскладе просто не нужна, лишние "тормоза".
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34043429
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thats right!LittleCat, а вы можете сбросить кусок кода готовой программы, мне кжется так будет легче разобраться :). Маленький примерчик ;)
Пардон, не понял, примерчик чего ? Если я знаю о каком-то механизме взаимодествия с базой данных, это еще не значит, что я использовал его в своей работе ;-) Для Вашей специфичной задачи я бы сделал прямой доступ через функции, экспортируемые libgtmshr.so, что дало бы выигрыш в скорости по сравнению с методами, рекомендуемыми в документации, но это надо маленько поразбираться с внутренним устройством системы, что требует времени...
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34043486
Thats right!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LittleCatПардон, не понял, примерчик чего ?

Сори, я думал у вас был опыт работы с этой прогой. Просто хотелось посмотреть пример реализации какого нибудь алгоритма, чтобы на основе этого разбираться дальше. :) Спасибо за дельные советы. Буду пытаться "их прикрутить к проге"!
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34043840
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thats right! LittleCatПардон, не понял, примерчик чего ?

Сори, я думал у вас был опыт работы с этой прогой. Просто хотелось посмотреть пример реализации какого нибудь алгоритма, чтобы на основе этого разбираться дальше. :) Спасибо за дельные советы. Буду пытаться "их прикрутить к проге"!
Это не просто прога, это база данных, основанная на М-технологии, и в этой технологии у меня опыта больше 10 лет ;-) Ну и с GT.M, в частности, опыт имеется. Просто вопрос был слишком абстрактный, насчет примерчика. Во что превращается Ваш "хитрый" SQL запрос, я вроде показал, если спросите еще что-то конкретное, опять же могу попробовать помочь...
...
Рейтинг: 0 / 0
Кто быстрее выполнит простой запрос
    #34045863
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Thats right! LittleCatРезультат тоже будет мгновенный :-)

Тогда вопрос, как говорится, на засыпку. Как поведет себя GT.M на базе размером в 20 гиг , где количество записей от 200 млн. на той же тачке, о которой я говорил в первом посте. Запросов разумеется гораздо меньше, макс ~3 в секунду.

Вы все-таки на всякий случай протестируйте самостоятельно, тест несложный, а то тут насоветуют. 50000 запросов/сек у них будет летать в любом варианте на 220 процентов. Несерьезно. Причем обратите внимание, люди клянутся, что все будет работать, даже не узнав, какое у Вас сетевое оборудование. В интернете ж за базар отвечать не нужно.

А Вам потом отвечать перед начальством и клиентами, причем в реале.



Максимальное превосходство М-систем и Кеша перед РСУБД по скорости, которое нам тут продемонстрировали с очень многочисленными оговорками не дотягивало и до порядока, т.е. меньше чем в 10 раз. А вообще по-моему получалось раза в 2-3 быстрее, если не ошибаюсь и то повторить никому не удалось. Ну ладно, пусть будет М-система в 10 раз быстрее СКЛ сервера. 5000 транзакций/сек на СКЛ сервер на обычной машине в такой задаче это фантастика по-моему. Так что 50000 транзакций для М-системы это ИМХО трындеж чистой воды.

А 3 транзакции на 200 млн записей легко выдаст любой нормальный СКЛ сервер на нормальном кухонном железе.

По вопросу о 50000 транзакциях. Поставьте на сервер побольше мозгов, это дешево, напишите на С++ програмку, заведите там ассоциативный массив, заполняйте его в начале сессии. Подключите эту программу как плагин к веб серверу или кто у Вас обрабатывает запросы, или пусть сама слушает порты, и получите близкое к теоретическому быстродействие. Будет бесплатно и быстро, быстрее уже не получится. Как Вам тут уже говорили, непонятно зачем в этой задаче вообще нужны СУБД.
...
Рейтинг: 0 / 0
25 сообщений из 78, страница 1 из 4
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Кто быстрее выполнит простой запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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