powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подскажите правильно ли я мыслю
37 сообщений из 37, показаны все 2 страниц
Подскажите правильно ли я мыслю
    #35880632
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Задача такая:
есть 10 миллионов записей, у каждой есть id и текст длиной 200 байт. Индекс по ID.

Нужно быстро делать выборку из этой базы по группе из 500сот не связанных между собой ID:

select * from ... where id in(1,2,3,4,5...500)

эти 500 подзапросов убивают любой винчестер, и получить быстродействие выше 1 запроса в секунду не получается.

Вопрос - как получить быстродействие 10 выборок в секунду?
Кроме как установить 10 винчестеров или больше памяти чтобы вся база умещалась в кеш идей у меня нет...
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35880867
ддддддд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vazhneckiВсем привет.

Задача такая:
есть 10 миллионов записей, у каждой есть id и текст длиной 200 байт. Индекс по ID.

Нужно быстро делать выборку из этой базы по группе из 500сот не связанных между собой ID:

select * from ... where id in(1,2,3,4,5...500)

эти 500 подзапросов убивают любой винчестер , и получить быстродействие выше 1 запроса в секунду не получается.

Вопрос - как получить быстродействие 10 выборок в секунду?
Кроме как установить 10 винчестеров или больше памяти чтобы вся база умещалась в кеш идей у меня нет...

В каком смысле убивают?
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35880951
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhnecki , какая СУБД-то?
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35881330
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько лет назад афтар впервые сел за комп ?
Такое впечатление, что пошел 2-й год

Научитесь спрашивать.
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35881339
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
похоже здесь одни школьники остались с тех пор как я заходил в последний раз :)
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35881345
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
создайте такую тестовую базу и поймёте о чем я.
база mysql myisam, но это значния не имеет, разве что другой тип индекса выбрать
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35881447
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> похоже здесь одни школьники остались с тех пор как я заходил в последний раз

Нет, дружище, школьники типа Вас сюда иногда заходят и начинают спрашивать фигню. Вот как сейчас.

Вам русским языком сказали: научитесь задавать вопросы. Сейчас Вы задали вопрос "как заставить велосипед летать?". Ответ очевиден даже полным баранам: никак.
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35881455
vazhneckiсоздайте такую тестовую базу и поймёте о чем я.
база mysql myisam, но это значния не имеет, разве что другой тип индекса выбрать

Однако невежливо так отвечать.
Все в этом мире имеет значение :)

Ну а если база mysql зайди в соответствующий раздел и задай там вопрос
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35881558
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если здесь есть нормальные люди - напишите ответ, остальным просьба не флудить, вопрос задан исчерпывающе.
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35881566
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
база любая, задача и заключается в выборе условий для реализации, а не реализация на определённой базе/железе.
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35881612
vazhneckiбаза любая, задача и заключается в выборе условий для реализации, а не реализация на определённой базе/железе.

Если база любая, то могу тебе сказать что проблем у мну с такими запросами нет
и первоначальный вопрос к проектированию как по мне никакого отношения не имеет.
так-что ищи соответствующий раздел и задавай нормально вопрос
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35881638
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiбаза mysql myisam, но это значния не имеет, разве что другой тип индекса выбрать
Ты глубоко ошибаешься...
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882187
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiбаза любая, задача и заключается в выборе условий для реализации, а не реализация на определённой базе/железе.У нас на Оракле проблема не засветилась...
Помогло хоть чем-то? :)
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882469
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у вас на оракле делает 5000 СЛУЧАЙНЫХ выборок в секунду ?
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882481
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhnecki
Нужно быстро делать выборку из этой базы по группе из 500сот не связанных между собой ID:
select * from ... where id in(1,2,3,4,5...500)
Обычно делают вторую таблицу в которую записывают эти 500 id, и потом уже используя inner join ... должно быть гораздо быстрее
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882482
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточняю для тех кто в танке:
>эти 500 подзапросов убивают любой винчестер, и получить быстродействие выше 1 запроса в секунду не получается.

Здесь "1 запрос" это, как я написал, запрос вида:
select * from ... where id in(1,2,3,4,5...500)

а не один из этих 500 подзапросиков, надеюсь вы хоть про подзапросики знаете, или здесь вообще детский сад :)
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882494
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
S.G.vazhnecki
Нужно быстро делать выборку из этой базы по группе из 500сот не связанных между собой ID:
select * from ... where id in(1,2,3,4,5...500)
Обычно делают вторую таблицу в которую записывают эти 500 id, и потом уже используя inner join ... должно быть гораздо быстрее
вы прикалываетесь ? какое быстрее, один и тотже primary индекс испольдуется для поиска тела по ID
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882507
vazhneckiУточняю для тех кто в танке:
>эти 500 подзапросов убивают любой винчестер, и получить быстродействие выше 1 запроса в секунду не получается.

Здесь "1 запрос" это, как я написал, запрос вида:
select * from ... where id in(1,2,3,4,5...500)

а не один из этих 500 подзапросиков, надеюсь вы хоть про подзапросики знаете, или здесь вообще детский сад :)

Устал ты нас
У нас в яслях и садике нет этих проблем, совсем нет.
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882547
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильно, давайте обсудим ясли, школу и садик, а про задачу, которую блин даже никто понять не может, просто забудем :)
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882548
Glok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiсоздайте такую тестовую базу и поймёте о чем я.
база mysql myisam, но это значния не имеет, разве что другой тип индекса выбрать
Ну создал?
0.04 Сек... все 500..
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882606
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glokvazhneckiсоздайте такую тестовую базу и поймёте о чем я.
база mysql myisam, но это значния не имеет, разве что другой тип индекса выбрать
Ну создал?
0.04 Сек... все 500..Даже и не знаю что подумать, на что грешить. Может руки прямые?
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882629
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glokvazhneckiсоздайте такую тестовую базу и поймёте о чем я.
база mysql myisam, но это значния не имеет, разве что другой тип индекса выбрать
Ну создал?
0.04 Сек... все 500..
с первого запроса ? или после того как дисковый кеш их запомнил ?
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882637
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уточняю для вторых танкистов :)
select * from .... where id in(N1,N2...N500)
где все N случайны
В таблице записей не 10 штук, а 10 миллионов, так, что даже половина не умещяется в кеше.
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882647
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если у вас куча оперативки, а базу вы только что создали, то вся она будет в кеше и эксперимент не получится -
чтобы получить представление о проблеме - создайте базу, перезагрузитесь (или сбросьте дисковый кеш вашей операционки) и повторите этот запрос, будет далеко не 0.04 секунды ;)
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882675
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhnecki, не понятно, чем Вы недовольны. Что серверу надо время, чтобы выполнить запрос?
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882703
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
C:\Documents and Settings\bely>sqlplus /nolog

SQL*Plus: Release  11 . 1 . 0 . 6 . 0  - Production on Fri Mar  20   18 : 22 : 23   2009 

Copyright (c)  1982 ,  2007 , Oracle.  All rights reserved.

SQL>
SQL> SELECT count(*), min(lg.id), max(lg.id) FROM act_oper_activ_log lg;

  COUNT(*) MIN(LG.ID) MAX(LG.ID)
---------- ---------- ----------
   23144511            1     74871623 

SQL>
SQL> set timing on
SQL> set autotrace on
SQL>
SQL> SELECT count(*), min(lg.id), max(lg.id) FROM act_oper_activ_log lg
   2   WHERE lg.id in (SELECT level* 100  from dual connect by level <  700 );

  COUNT(*) MIN(LG.ID) MAX(LG.ID)
---------- ---------- ----------
        588          100        69900 

Elapsed:  00 : 00 : 00 . 20 

...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882753
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
какой размер одной записи в 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 раз без "предварительных тестов" которые заполнят кеш :)
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882762
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хотя даже так будет нереально. потому что записи будут читаться относительно последовательно с диска а значит с меньшей задержкой, но для теста пойдёт :)
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882812
vazhnecki,

ну вот заставил таки
в таблице 29 с небольшим млн записей

запрос select * from table where code in
(здесь 520 значений)

------ Performance info ------
Prepare time = 125ms
Execute time = 141ms
-----------------------------

справедлитвости ради должен сказать что
1. значения не совсем случайные
2. они "охватывают" только часть диапазона возможных значений поля code

однако это не мешает мне по прежнему утверждать, что проблем у мну с этим нет
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882847
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiпотому что записи будут читаться относительно последовательно с диска
Какие глубокие познания СУБД и особенностей хранения на диске вылазят. Ужоснах.
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882918
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видимо у меня медленный HDD, но меньше секунды не получалось, так или иначе:

Prepare time = 125ms
Execute time = 141ms

=0.266 секунды

а это в 3 раза медленнее чем мне надо, максимум 0.1 секунда должна быть, для 10 запросов в секунду.


WildSeryvazhneckiпотому что записи будут читаться относительно последовательно с диска
Какие глубокие познания СУБД и особенностей хранения на диске вылазят. Ужоснах.
для вас я вижу секрет что данные отсортированы по ID, вот это действительно детский сад.

правда это моё предположение неверно потому что выборка из случайного списка ID всё равно сортируется по ID движком субд.
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882919
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot vazhnecki]Видимо у меня медленный HDD, но меньше секунды не получалось, так или иначе:

Prepare time = 125ms
Execute time = 141ms

=0.266 секунды

а это в 3 раза медленнее чем мне надо, максимум 0.1 секунда должна быть, для 10 запросов в секунду.
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882922
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тьфу. чёт я проглючил, конечно не последовательно.
но это не меняет сути, данные разбросаны по разным сегментам диска и скорость получения инфы ограничена скоростью доступа к дорожке диска
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882937
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

мне записи вернет я думаю за приемлемое время.

НЕ могу сейчас проверить, да и лень честно говоря

ЗЫ. Все-же еще раз советую обратиться в форум соответствующий твоей СУБД. Там больше пользы будет.
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35882943
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость совсем ГостьЗЫ. Все-же еще раз советую обратиться в форум соответствующий твоей СУБД. Там больше пользы будет.Разве это образумит вошедшего во вкус флудераста?
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35883012
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всё, нашел решение для моего случая,
редко вызываемые ID будут периодически выноситься в отдельную таблицу, что уменьшит основную таблицу значительно.
...
Рейтинг: 0 / 0
Подскажите правильно ли я мыслю
    #35883201
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiдля вас я вижу секрет что данные отсортированы по ID, вот это действительно детский сад.
Это если повезет.
Реально - нет.
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подскажите правильно ли я мыслю
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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