Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Приветствую всех участников форума! У меня назрел такой вопрос. Есть простая табличка из двух полей ID тип int Name тип varcar(30) Так вот суть вопроса, какая из СУБД справиться с этой задачей быстрее. Запрос к таблице такого рода SELECT * FROM tbl WHERE name='Что то'. Тачка, на которой это будет - Pentium D, SCSI RAID 1 (miror, причем программный). Операционная система - что-нибудь из никсов. Плотность запросов ~30000-50000 в секунду. Размер таблицы 3 млн. записей. Размер порядка 200 мегабайт. Есть одно но. СУБД должна быть бесплатно, хоть оракл, но бесплатный, его ограничений по размеру базы должно хватить. Конечно, ограничение по процессору и памяти не радуют, но всё же. И сразу второй вопрос, кто имел дело с бесплатным ораклом? Какие его плюсы и насколько он урезан по сравнению с нормальным ораклом. Я бы мог протестить всё самостоятельно, но хотелось бы узнать в каком ключе двигаться и что тестить(не тратить же время на тестирование всех СУБД, к сожалению время не позволяет). Кроме того, практика всегда отличается от тестов, поэтому рад буду выслушать все ваши мнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2006, 19:18 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Thats right!Приветствую всех участников форума! У меня назрел такой вопрос. Есть простая табличка из двух полей ID тип int Name тип varcar(30) Так вот суть вопроса, какая из СУБД справиться с этой задачей быстрее. Запрос к таблице такого рода SELECT * FROM tbl WHERE name='Что то'. Тачка, на которой это будет - Pentium D, SCSI RAID 1 (miror, причем программный). Операционная система - что-нибудь из никсов. Плотность запросов ~30000-50000 в секунду. Размер таблицы 3 млн. записей. Размер порядка 200 мегабайт. На однопроцессорной машине - никакая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2006, 19:32 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
PENTIUM D - у него два ядра, следовательно два проца. Или и это не хватит? Тогда вопрос. как можно разрулить кластер на двух тачках похожей конфигурации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2006, 19:38 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Thats right!Запрос к таблице такого рода SELECT * FROM tbl WHERE name='Что то'. Для такого вида запросов в таком количестве голая СУБД - не лучший выбор, слишком много лишнего навешано. Лучше закешировать эти 200 мегов в памяти, в хэше/массиве/итп и выдавать без всяких селектов. На тему бесплатного оракла.... скажем так, ничего существенного с точки зрения описанной задачи там не отрезано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2006, 20:26 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
softwarer Thats right!Запрос к таблице такого рода SELECT * FROM tbl WHERE name='Что то'. Для такого вида запросов в таком количестве голая СУБД - не лучший выбор, слишком много лишнего навешано. Лучше закешировать эти 200 мегов в памяти, в хэше/массиве/итп и выдавать без всяких селектов. Просто можно было кешить всё на "клиенском" приложении, но проблема в том, что с этой базой работают несколько независимых серверов, а писать синхронизацию всего этого добра.... Неужели на уровне СУБД нельзя такое обеспечить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2006, 20:42 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Thats right!Просто можно было кешить всё на "клиенском" приложении, Я бы скорее приписал что-нибудь сбоку, не сервер приложений, а просто "небольшой сервер ответа вот на этот персональный вопрос". И пусть все спрашивают именно у него, а он будет возвращать данные из кэша и слушать оповещения БД об изменении данных. Thats right!Неужели на уровне СУБД нельзя такое обеспечить? Можно. Но при этом я бы ожидал потерь в производительности. Насколько заметных - не готов сходу оценить. По идее, самыми быстрыми в этом случае должны быть in-memory databases, затем - обычные из расчета "чем проще, тем лучше". Но с чем сравниваем - сравниваем с примерно мегабайтным массивом указателей на строки, для которого мы можем выбрать логику хранения/доступа исходя из особенностей данных (скажем, если id непрерывные, будет обычный индексированный массив - скорость выборки просто непревзойденная). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2006, 21:02 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Пару лет назад на двухпроцессорной машине с oracle 9i удавалось получить похожий рейт. Условия теста похожи - около 8 млн. записей, обращения по первичному ключу. Пул сессий был что-то около трех десятков, вся таблица была полностью поднята в buffer cache. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2006, 23:47 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous Пару лет назад на двухпроцессорной машине с oracle 9i удавалось получить похожий рейт. Условия теста похожи - около 8 млн. записей, обращения по первичному ключу. Пул сессий был что-то около трех десятков, вся таблица была полностью поднята в buffer cache. 30000-50000 в секунду? А сколько типичное кол-во выбираемых строчек? Если 1-4, то могу поверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 10:51 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Funny_Falcon andrey_anonymous Пару лет назад на двухпроцессорной машине с oracle 9i удавалось получить похожий рейт. Условия теста похожи - около 8 млн. записей, обращения по первичному ключу. Пул сессий был что-то около трех десятков, вся таблица была полностью поднята в buffer cache. 30000-50000 в секунду? А сколько типичное кол-во выбираемых строчек? Если 1-4, то могу поверить. Суть проста, надо выбрать ID слова и всё, количество возвращаемых записе - одна, так как слова в поле Name уникальны. А если тип HEAP в мускуле для этой цели использовать? И если как вариант подойдет, то как лучше сбрасывать данные из HEAP в Innobd например, как лучше провести синхронизацию? Есть у кого-нибудь подобная практика? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 11:05 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
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к запросов в сек НА ОДИН сервер. Возможно достаточно будет поднять несколько СУБД разгрузив их, связать через один мастер - много подчиненных. Управление и наполнение идет через мастера, запросы на подчиненных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 11:24 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Thats right! Суть проста, надо выбрать ID слова и всё, количество возвращаемых записе - одна, так как слова в поле Name уникальны. Ну тогда не нужен Вам никакой SQL. Берете например GT.M и весь Ваш запрос превращается в один оператор Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 11:32 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
LittleCat Thats right! Суть проста, надо выбрать ID слова и всё, количество возвращаемых записе - одна, так как слова в поле Name уникальны. Ну тогда не нужен Вам никакой SQL. Берете например GT.M и весь Ваш запрос превращается в один оператор Код: plaintext 1. также годится MSM, CACHE, - платные M3-LITE - бесплатная принцип тот же что и GT.M но все под Windows GT.M - под LINUX в любом варианте летать будет на 220 % ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 12:23 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Хм... А GT.M под линукс не бесплатная? И как с ней работать из с++? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 12:57 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Thats right!Хм... А GT.M под линукс не бесплатная? И как с ней работать из с++? Под Linux как раз GT.M бесплатный, и исходники на sourceforge лежат :-) А как работать из С++, это уже дело вкуса, вариантов много, нужно доку читать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 13:10 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
GTM_UNIX-Prog-Manual-4.4.pdf глава 11 раздел Calls from External Routines: Call-Ins ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 13:26 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
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'. Вообщем суть в том, что выборка идет из одной таблицы, но с извращением:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 14:17 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Thats right! Вообщем суть в том, что выборка идет из одной таблицы, но с извращением:) Ну так тоже не страшно, сделаем индексацию в том же глобале, вот пример создания одной записи (при условии что ID и name не пересекаются) Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 16:02 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
LittleCatРезультат тоже будет мгновенный :-) Тогда вопрос, как говорится, на засыпку. Как поведет себя GT.M на базе размером в 20 гиг , где количество записей от 200 млн. на той же тачке, о которой я говорил в первом посте. Запросов разумеется гораздо меньше, макс ~3 в секунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 17:26 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Thats right! Тогда вопрос, как говорится, на засыпку. Как поведет себя GT.M на базе размером в 20 гиг , где количество записей от 200 млн. на той же тачке, о которой я говорил в первом посте. Запросов разумеется гораздо меньше, макс ~3 в секунду. ИМХО без проблем, если учесть, что на нем строят банковские системы и системы автоматизации крупных госпиталей. Есть подозрение, что и 200 гиг не будут проблемой.... PS С бОльшей уверенностью рекомендовал бы Cache, но вопрос был про бесплатную базу ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 17:45 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
LittleCat, а вы можете сбросить кусок кода готовой программы, мне кжется так будет легче разобраться :). Маленький примерчик ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 19:32 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
А транзакции поддерживать надо или нет? Если не надо - просто строиться хэш-таблица в оперативной памяти, и вся любовь. СУБД при таком раскладе просто не нужна, лишние "тормоза". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 19:34 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Thats right!LittleCat, а вы можете сбросить кусок кода готовой программы, мне кжется так будет легче разобраться :). Маленький примерчик ;) Пардон, не понял, примерчик чего ? Если я знаю о каком-то механизме взаимодествия с базой данных, это еще не значит, что я использовал его в своей работе ;-) Для Вашей специфичной задачи я бы сделал прямой доступ через функции, экспортируемые libgtmshr.so, что дало бы выигрыш в скорости по сравнению с методами, рекомендуемыми в документации, но это надо маленько поразбираться с внутренним устройством системы, что требует времени... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2006, 10:25 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
LittleCatПардон, не понял, примерчик чего ? Сори, я думал у вас был опыт работы с этой прогой. Просто хотелось посмотреть пример реализации какого нибудь алгоритма, чтобы на основе этого разбираться дальше. :) Спасибо за дельные советы. Буду пытаться "их прикрутить к проге"! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2006, 10:38 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Thats right! LittleCatПардон, не понял, примерчик чего ? Сори, я думал у вас был опыт работы с этой прогой. Просто хотелось посмотреть пример реализации какого нибудь алгоритма, чтобы на основе этого разбираться дальше. :) Спасибо за дельные советы. Буду пытаться "их прикрутить к проге"! Это не просто прога, это база данных, основанная на М-технологии, и в этой технологии у меня опыта больше 10 лет ;-) Ну и с GT.M, в частности, опыт имеется. Просто вопрос был слишком абстрактный, насчет примерчика. Во что превращается Ваш "хитрый" SQL запрос, я вроде показал, если спросите еще что-то конкретное, опять же могу попробовать помочь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2006, 12:00 |
|
||
|
Кто быстрее выполнит простой запрос
|
|||
|---|---|---|---|
|
#18+
Thats right! LittleCatРезультат тоже будет мгновенный :-) Тогда вопрос, как говорится, на засыпку. Как поведет себя GT.M на базе размером в 20 гиг , где количество записей от 200 млн. на той же тачке, о которой я говорил в первом посте. Запросов разумеется гораздо меньше, макс ~3 в секунду. Вы все-таки на всякий случай протестируйте самостоятельно, тест несложный, а то тут насоветуют. 50000 запросов/сек у них будет летать в любом варианте на 220 процентов. Несерьезно. Причем обратите внимание, люди клянутся, что все будет работать, даже не узнав, какое у Вас сетевое оборудование. В интернете ж за базар отвечать не нужно. А Вам потом отвечать перед начальством и клиентами, причем в реале. Максимальное превосходство М-систем и Кеша перед РСУБД по скорости, которое нам тут продемонстрировали с очень многочисленными оговорками не дотягивало и до порядока, т.е. меньше чем в 10 раз. А вообще по-моему получалось раза в 2-3 быстрее, если не ошибаюсь и то повторить никому не удалось. Ну ладно, пусть будет М-система в 10 раз быстрее СКЛ сервера. 5000 транзакций/сек на СКЛ сервер на обычной машине в такой задаче это фантастика по-моему. Так что 50000 транзакций для М-системы это ИМХО трындеж чистой воды. А 3 транзакции на 200 млн записей легко выдаст любой нормальный СКЛ сервер на нормальном кухонном железе. По вопросу о 50000 транзакциях. Поставьте на сервер побольше мозгов, это дешево, напишите на С++ програмку, заведите там ассоциативный массив, заполняйте его в начале сессии. Подключите эту программу как плагин к веб серверу или кто у Вас обрабатывает запросы, или пусть сама слушает порты, и получите близкое к теоретическому быстродействие. Будет бесплатно и быстро, быстрее уже не получится. Как Вам тут уже говорили, непонятно зачем в этой задаче вообще нужны СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2006, 03:26 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=35&tid=1553475]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 333ms |

| 0 / 0 |
