|
|
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
Всем привет. Задача такая: есть 10 миллионов записей, у каждой есть id и текст длиной 200 байт. Индекс по ID. Нужно быстро делать выборку из этой базы по группе из 500сот не связанных между собой ID: select * from ... where id in(1,2,3,4,5...500) эти 500 подзапросов убивают любой винчестер, и получить быстродействие выше 1 запроса в секунду не получается. Вопрос - как получить быстродействие 10 выборок в секунду? Кроме как установить 10 винчестеров или больше памяти чтобы вся база умещалась в кеш идей у меня нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 01:36 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhneckiВсем привет. Задача такая: есть 10 миллионов записей, у каждой есть id и текст длиной 200 байт. Индекс по ID. Нужно быстро делать выборку из этой базы по группе из 500сот не связанных между собой ID: select * from ... where id in(1,2,3,4,5...500) эти 500 подзапросов убивают любой винчестер , и получить быстродействие выше 1 запроса в секунду не получается. Вопрос - как получить быстродействие 10 выборок в секунду? Кроме как установить 10 винчестеров или больше памяти чтобы вся база умещалась в кеш идей у меня нет... В каком смысле убивают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 09:36 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhnecki , какая СУБД-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 10:17 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
Сколько лет назад афтар впервые сел за комп ? Такое впечатление, что пошел 2-й год Научитесь спрашивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 12:04 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
похоже здесь одни школьники остались с тех пор как я заходил в последний раз :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 12:06 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
создайте такую тестовую базу и поймёте о чем я. база mysql myisam, но это значния не имеет, разве что другой тип индекса выбрать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 12:07 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
> похоже здесь одни школьники остались с тех пор как я заходил в последний раз Нет, дружище, школьники типа Вас сюда иногда заходят и начинают спрашивать фигню. Вот как сейчас. Вам русским языком сказали: научитесь задавать вопросы. Сейчас Вы задали вопрос "как заставить велосипед летать?". Ответ очевиден даже полным баранам: никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 12:33 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhneckiсоздайте такую тестовую базу и поймёте о чем я. база mysql myisam, но это значния не имеет, разве что другой тип индекса выбрать Однако невежливо так отвечать. Все в этом мире имеет значение :) Ну а если база mysql зайди в соответствующий раздел и задай там вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 12:35 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
если здесь есть нормальные люди - напишите ответ, остальным просьба не флудить, вопрос задан исчерпывающе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 12:54 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
база любая, задача и заключается в выборе условий для реализации, а не реализация на определённой базе/железе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 12:55 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhneckiбаза любая, задача и заключается в выборе условий для реализации, а не реализация на определённой базе/железе. Если база любая, то могу тебе сказать что проблем у мну с такими запросами нет и первоначальный вопрос к проектированию как по мне никакого отношения не имеет. так-что ищи соответствующий раздел и задавай нормально вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 13:05 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhneckiбаза mysql myisam, но это значния не имеет, разве что другой тип индекса выбрать Ты глубоко ошибаешься... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 13:09 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhneckiбаза любая, задача и заключается в выборе условий для реализации, а не реализация на определённой базе/железе.У нас на Оракле проблема не засветилась... Помогло хоть чем-то? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 15:39 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
у вас на оракле делает 5000 СЛУЧАЙНЫХ выборок в секунду ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 16:58 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhnecki Нужно быстро делать выборку из этой базы по группе из 500сот не связанных между собой ID: select * from ... where id in(1,2,3,4,5...500) Обычно делают вторую таблицу в которую записывают эти 500 id, и потом уже используя inner join ... должно быть гораздо быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 17:01 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
Уточняю для тех кто в танке: >эти 500 подзапросов убивают любой винчестер, и получить быстродействие выше 1 запроса в секунду не получается. Здесь "1 запрос" это, как я написал, запрос вида: select * from ... where id in(1,2,3,4,5...500) а не один из этих 500 подзапросиков, надеюсь вы хоть про подзапросики знаете, или здесь вообще детский сад :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 17:03 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
S.G.vazhnecki Нужно быстро делать выборку из этой базы по группе из 500сот не связанных между собой ID: select * from ... where id in(1,2,3,4,5...500) Обычно делают вторую таблицу в которую записывают эти 500 id, и потом уже используя inner join ... должно быть гораздо быстрее вы прикалываетесь ? какое быстрее, один и тотже primary индекс испольдуется для поиска тела по ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 17:07 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhneckiУточняю для тех кто в танке: >эти 500 подзапросов убивают любой винчестер, и получить быстродействие выше 1 запроса в секунду не получается. Здесь "1 запрос" это, как я написал, запрос вида: select * from ... where id in(1,2,3,4,5...500) а не один из этих 500 подзапросиков, надеюсь вы хоть про подзапросики знаете, или здесь вообще детский сад :) Устал ты нас У нас в яслях и садике нет этих проблем, совсем нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 17:10 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
правильно, давайте обсудим ясли, школу и садик, а про задачу, которую блин даже никто понять не может, просто забудем :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 17:20 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhneckiсоздайте такую тестовую базу и поймёте о чем я. база mysql myisam, но это значния не имеет, разве что другой тип индекса выбрать Ну создал? 0.04 Сек... все 500.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 17:21 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
Glokvazhneckiсоздайте такую тестовую базу и поймёте о чем я. база mysql myisam, но это значния не имеет, разве что другой тип индекса выбрать Ну создал? 0.04 Сек... все 500..Даже и не знаю что подумать, на что грешить. Может руки прямые? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 17:44 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
Glokvazhneckiсоздайте такую тестовую базу и поймёте о чем я. база mysql myisam, но это значния не имеет, разве что другой тип индекса выбрать Ну создал? 0.04 Сек... все 500.. с первого запроса ? или после того как дисковый кеш их запомнил ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 17:53 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
уточняю для вторых танкистов :) select * from .... where id in(N1,N2...N500) где все N случайны В таблице записей не 10 штук, а 10 миллионов, так, что даже половина не умещяется в кеше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 17:56 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
если у вас куча оперативки, а базу вы только что создали, то вся она будет в кеше и эксперимент не получится - чтобы получить представление о проблеме - создайте базу, перезагрузитесь (или сбросьте дисковый кеш вашей операционки) и повторите этот запрос, будет далеко не 0.04 секунды ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 18:00 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhnecki, не понятно, чем Вы недовольны. Что серверу надо время, чтобы выполнить запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 18:16 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhneckiуточняю для вторых танкистов :) select * from .... where id in(N1,N2...N500) где все N случайны В таблице записей не 10 штук, а 10 миллионов, так, что даже половина не умещяется в кеше. Так подет? Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 18:27 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
какой размер одной записи в act_oper_activ_log ? вот так с запасом: SELECT count(*), min(lg.id), max(lg.id) FROM act_oper_activ_log lg WHERE lg.id in (SELECT level*10000 from dual connect by level < 700); предварительно сбросив дисковый кеш и сделав этот запрос только 1 раз без "предварительных тестов" которые заполнят кеш :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 18:49 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
хотя даже так будет нереально. потому что записи будут читаться относительно последовательно с диска а значит с меньшей задержкой, но для теста пойдёт :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 18:54 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhnecki, ну вот заставил таки в таблице 29 с небольшим млн записей запрос select * from table where code in (здесь 520 значений) ------ Performance info ------ Prepare time = 125ms Execute time = 141ms ----------------------------- справедлитвости ради должен сказать что 1. значения не совсем случайные 2. они "охватывают" только часть диапазона возможных значений поля code однако это не мешает мне по прежнему утверждать, что проблем у мну с этим нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 19:26 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhneckiпотому что записи будут читаться относительно последовательно с диска Какие глубокие познания СУБД и особенностей хранения на диске вылазят. Ужоснах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 20:12 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
Видимо у меня медленный HDD, но меньше секунды не получалось, так или иначе: Prepare time = 125ms Execute time = 141ms =0.266 секунды а это в 3 раза медленнее чем мне надо, максимум 0.1 секунда должна быть, для 10 запросов в секунду. WildSeryvazhneckiпотому что записи будут читаться относительно последовательно с диска Какие глубокие познания СУБД и особенностей хранения на диске вылазят. Ужоснах. для вас я вижу секрет что данные отсортированы по ID, вот это действительно детский сад. правда это моё предположение неверно потому что выборка из случайного списка ID всё равно сортируется по ID движком субд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 21:13 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
[quot vazhnecki]Видимо у меня медленный HDD, но меньше секунды не получалось, так или иначе: Prepare time = 125ms Execute time = 141ms =0.266 секунды а это в 3 раза медленнее чем мне надо, максимум 0.1 секунда должна быть, для 10 запросов в секунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 21:14 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
тьфу. чёт я проглючил, конечно не последовательно. но это не меняет сути, данные разбросаны по разным сегментам диска и скорость получения инфы ограничена скоростью доступа к дорожке диска ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 21:16 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
vazhnecki[quot vazhnecki]Видимо у меня медленный HDD, но меньше секунды не получалось, так или иначе: Prepare time = 125ms Execute time = 141ms =0.266 секунды а это в 3 раза медленнее чем мне надо, максимум 0.1 секунда должна быть, для 10 запросов в секунду. Не знаю что там у тебя, а мну в качестве "сервера" обыкновенная десктопная машинка, не первой свежести Prepare time - время подготовки запроса Execute time - время его выполнения если я воткну эти 5000 (5 тысяч) значений в таблицу, и сделаю соответствующую выборку select t.* from table_data t,table_where w where t.code=w.code ну или последовательно 10 раз выполню запрос select t.* from table_data t,table_where w where t.code=w.code and w.nw = :nw мне записи вернет я думаю за приемлемое время. НЕ могу сейчас проверить, да и лень честно говоря ЗЫ. Все-же еще раз советую обратиться в форум соответствующий твоей СУБД. Там больше пользы будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 21:35 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
Гость совсем ГостьЗЫ. Все-же еще раз советую обратиться в форум соответствующий твоей СУБД. Там больше пользы будет.Разве это образумит вошедшего во вкус флудераста? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 21:42 |
|
||
|
Подскажите правильно ли я мыслю
|
|||
|---|---|---|---|
|
#18+
всё, нашел решение для моего случая, редко вызываемые ID будут периодически выноситься в отдельную таблицу, что уменьшит основную таблицу значительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2009, 23:05 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1543365]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
157ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 194ms |
| total: | 478ms |

| 0 / 0 |
