powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Чему тормозить в таком алгоритме работы?
25 сообщений из 36, страница 1 из 2
Чему тормозить в таком алгоритме работы?
    #38555060
ia6514
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Железо (да-да, знаю, не серверное):
cpu intel core i5 2500K
ram 32GB 1333 DDR3
hdd seagate st1000dm003
postgresql 9.1.5, собранный на gentoo с настройками из коробки.
FS: ext4
connect: localhost



База:
Код: sql
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
CREATE TABLE users
(
    id SERIAL UNIQUE NOT NULL,
    url TEXT,
    name TEXT UNIQUE
);
CREATE UNIQUE INDEX users_id_idx ON users (id);


CREATE TABLE threads
(
    id SERIAL UNIQUE NOT NULL,
    url TEXT,
    createtime TIMESTAMP,
    aid INTEGER,
    hash BYTEA UNIQUE,
    name TEXT
);
CREATE UNIQUE INDEX threads_id_idx ON threads (id);
CREATE UNIQUE INDEX threads_hash_idx ON threads (hash);


CREATE TABLE messages
(
    id SERIAL UNIQUE NOT NULL,
    tid INTEGER,
    aid INTEGER,
    createtime TIMESTAMP,
    hash BYTEA UNIQUE,
    url TEXT,
    message TEXT
);

CREATE UNIQUE INDEX messages_id_idx ON messages (id);
CREATE UNIQUE INDEX messages_hash_idx ON messages (hash);



Втыкаю 500 сообщений в секунду в базу messages запросом вида:
Код: sql
1.
INSERT INTO messages (tid, aid, createtime, hash, url, message) VALUES (%s, %s, %s, decode(md5(%s), 'hex'), %s, %s);



Обращаюсь 500 раз в секунду в базу users запросом вида:
Код: sql
1.
SELECT id FROM users WHERE name = %s;



Периодически первый INSERT уходит в шуршание HDD секунд на 10. Периодически: точно не скажу - может быть раз в 30 минут.
Вопрос: как исключить подобные уходы в себя? Неужели только заменой дисковой подсистемы на "взрослую"? 500 подобных INSERT-ов в секунду - разве много?

Спасибо.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38555077
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подозреваю что затык происходит во время операции checkpoint. Покажите опции postgresql.conf : checkpoint_timeout, checkpoint_completion_target, checkpoint_segments.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38555088
ia6514
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daevyПодозреваю что затык происходит во время операции checkpoint. Покажите опции postgresql.conf : checkpoint_timeout, checkpoint_completion_target, checkpoint_segments.

Закомментировано (видимо дефолтное).
Код: plaintext
1.
2.
3.
4.
#checkpoint_segments = 3                # in logfile segments, min 1, 16MB each
#checkpoint_timeout = 5min              # range 30s-1h
#checkpoint_completion_target = 0.5     # checkpoint target duration, 0.0 - 1.0
#checkpoint_warning = 30s               # 0 disables
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38555110
/\/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ia6514,

Есть несколько возможностей, который Вам нужно проверить:

0. Какой $#$#$#% пишет таблицы без первичных ключей?
1. Уникальный индекс создается дважды: в момент создания константы и в явном виде в виде создания индекса. Индекс по bytea - посмотрите, какой у него размер. И это все создается дважды.
2. Какие настройки у сервера (postgresql.conf)? По умолчанию настройки позволяют заводиться серверу даже на зажигалке. То есть для работы их нужно изменить.
3. Отдельно проверьте работу функции md5. Думаю скорость ее работы Вас озадачит. (И нам сообщите)

Шуршание диском - это вполне обыкновенно. Идет заполнение кешей.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38555129
ia6514
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/\/\/\/\/\/\/\ia6514,

Есть несколько возможностей, который Вам нужно проверить:

0. Какой $#$#$#% пишет таблицы без первичных ключей?
1. Уникальный индекс создается дважды: в момент создания константы и в явном виде в виде создания индекса. Индекс по bytea - посмотрите, какой у него размер. И это все создается дважды.
2. Какие настройки у сервера (postgresql.conf)? По умолчанию настройки позволяют заводиться серверу даже на зажигалке. То есть для работы их нужно изменить.
3. Отдельно проверьте работу функции md5. Думаю скорость ее работы Вас озадачит. (И нам сообщите)

Шуршание диском - это вполне обыкновенно. Идет заполнение кешей.
UNIQUE NOT NULL - это то же самое, что PRIMARY KEY. Тут написано: http://www.postgresql.org/docs/8.1/static/ddl-constraints.html (искать по "primary key").
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38555206
ia6514
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/\/\/\/\/\/\/\ia6514,

Есть несколько возможностей, который Вам нужно проверить:

0. Какой $#$#$#% пишет таблицы без первичных ключей?
1. Уникальный индекс создается дважды: в момент создания константы и в явном виде в виде создания индекса. Индекс по bytea - посмотрите, какой у него размер. И это все создается дважды.
2. Какие настройки у сервера (postgresql.conf)? По умолчанию настройки позволяют заводиться серверу даже на зажигалке. То есть для работы их нужно изменить.
3. Отдельно проверьте работу функции md5. Думаю скорость ее работы Вас озадачит. (И нам сообщите)

Шуршание диском - это вполне обыкновенно. Идет заполнение кешей.
3) Скорость выполнения запроса пока не волнует, интересует возникновение периодических затыков.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38555243
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ia6514Закомментировано (видимо дефолтное).
Код: plaintext
1.
2.
3.
4.
#checkpoint_segments = 3                # in logfile segments, min 1, 16MB each
#checkpoint_timeout = 5min              # range 30s-1h
#checkpoint_completion_target = 0.5     # checkpoint target duration, 0.0 - 1.0
#checkpoint_warning = 30s               # 0 disables


попробуйте выставить следующим образом и посмотрите как пойдет дальше
checkpoint_segments = 32
checkpoint_timeout = 20min
checkpoint_completion_target = 0.9

при установке checkpoint_segments смотрите чтобы у вас было свободное место под сегменты, из расчета что один сегмент занимает 16MB.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38555362
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ia6514UNIQUE NOT NULL - это то же самое, что PRIMARY KEY. Тут написано: http://www.postgresql.org/docs/8.1/static/ddl-constraints.html (искать по "primary key").

Если прочитаете указанное Вами до конца, то увидите:

авторA table can have at most one primary key (while it can have many unique and not-null constraints)

Таким образом, это не то же самое.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38555684
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ia6514
Спасибо.
зачем 2 индекса у месседжей? поиск будет по какому полю? или вообще не будет?
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38555782
phasenoisepskcodedcompression
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/\/\/\/\/\/\ia6514UNIQUE NOT NULL - это то же самое, что PRIMARY KEY. Тут написано: http://www.postgresql.org/docs/8.1/static/ddl-constraints.html (искать по "primary key").

Если прочитаете указанное Вами до конца, то увидите:

авторA table can have at most one primary key (while it can have many unique and not-null constraints)

Таким образом, это не то же самое.
Не увидел, как вторая фраза относится к делу: таблица может иметь максимум один примари кей. Ну и что? У меня тоже один примари кей, (написанный в форме UNIQUE NOT NULL) и что?
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38555785
phasenoisepskcodedcompression
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durakia6514Спасибо.
зачем 2 индекса у месседжей? поиск будет по какому полю? или вообще не будет?
Поиск по 2 полям: id (вытащить сообщение по id), hash (проверить если такое сообщение уже при добавлении нового; это база индексации сообщений, в которой не нужны одинаковые месаги).
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38555822
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
phasenoisepskcodedcompressionIvan Durakпропущено...

зачем 2 индекса у месседжей? поиск будет по какому полю? или вообще не будет?
Поиск по 2 полям: id (вытащить сообщение по id), hash (проверить если такое сообщение уже при добавлении нового; это база индексации сообщений, в которой не нужны одинаковые месаги).
как часто случается что при добавлении новая мессага оказывается с уже таким же хэшем??
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38555873
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durakphasenoisepskcodedcompressionпропущено...

Поиск по 2 полям: id (вытащить сообщение по id), hash (проверить если такое сообщение уже при добавлении нового; это база индексации сообщений, в которой не нужны одинаковые месаги).
как часто случается что при добавлении новая мессага оказывается с уже таким же хэшем??

ну да, 500 взволнованных пользователей по 100500 раз пытаются прослать одинакое сообщение
"кг/ам" , а это творение "кг/ам" ставит их в очередь по unique индексу на вставку.


осмысленные тексты тем и отличаются от неосмысленных, что из множество существенно реже (менее плотно). при той же [потенциально] мощности.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38555888
phasenoisepskcodedcompression
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durakphasenoisepskcodedcompressionпропущено...

Поиск по 2 полям: id (вытащить сообщение по id), hash (проверить если такое сообщение уже при добавлении нового; это база индексации сообщений, в которой не нужны одинаковые месаги).
как часто случается что при добавлении новая мессага оказывается с уже таким же хэшем??
Ну бывает иногда, в основном когда юзер запостил одну ссылку на картинку. Ссылки вырезаем, получается пустая месага. Таких много ) Или много месаг типа "плюсадин", "поржал".
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38556131
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этот хеш и индекс на нем жрет дохрена ресурсов. Вставка сильно ускорится если его выкинуть совсем.
пустые мессаги и так можно выкинуть. А всякие "плюсадин" быстрее второй раз вставить , чем ради них целый хэш с индексом городить.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38556152
phasenoisepskcodedcompression
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durakэтот хеш и индекс на нем жрет дохрена ресурсов. Вставка сильно ускорится если его выкинуть совсем.
пустые мессаги и так можно выкинуть. А всякие "плюсадин" быстрее второй раз вставить , чем ради них целый хэш с индексом городить.
Ну это вроде-бы понятно. Но вопрос не в этом )
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38556217
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
phasenoisepskcodedcompressionIvan Durakпропущено...

зачем 2 индекса у месседжей? поиск будет по какому полю? или вообще не будет?
Поиск по 2 полям: id (вытащить сообщение по id), hash (проверить если такое сообщение уже при добавлении нового; это база индексации сообщений, в которой не нужны одинаковые месаги).

Ересь. Ибо:

ia6514Обращаюсь 500 раз в секунду в базу users запросом вида:

SELECT id FROM users WHERE name = %s;

Где это тут поиск по id???
Так что - в газенва на костер.

И после сожжения - создать индекс по name, посмотреть на его размер, и выставить shared_buffers адекватно этому размеру.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38556221
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уж чего чего, а 32 гигов ОЗУ на один индекс хватить должно :)

Меня, кстати, терзают смутные сомненья, что ia6514 == phasenoisepskcodedcompression
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38556232
phasenoisepskcodedcompression
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hawkmoonphasenoisepskcodedcompressionпропущено...

Поиск по 2 полям: id (вытащить сообщение по id), hash (проверить если такое сообщение уже при добавлении нового; это база индексации сообщений, в которой не нужны одинаковые месаги).

Ересь. Ибо:

ia6514Обращаюсь 500 раз в секунду в базу users запросом вида:

SELECT id FROM users WHERE name = %s;

Где это тут поиск по id???
Так что - в газенва на костер.

И после сожжения - создать индекс по name, посмотреть на его размер, и выставить shared_buffers адекватно этому размеру.
Не, ну есть конечно недоработки с индексами. Но вопрос не про скорость инсерта, а про затыки с HDD.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38556234
phasenoisepskcodedcompression
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HawkmoonУж чего чего, а 32 гигов ОЗУ на один индекс хватить должно :)

Меня, кстати, терзают смутные сомненья, что ia6514 == phasenoisepskcodedcompression
Ну в разных браузерах разные ники, эхо войны с модерами в соседнем разделе.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38556245
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
phasenoisepskcodedcompressionHawkmoonпропущено...


Ересь. Ибо:

пропущено...


Где это тут поиск по id???
Так что - в газенва на костер.

И после сожжения - создать индекс по name, посмотреть на его размер, и выставить shared_buffers адекватно этому размеру.
Не, ну есть конечно недоработки с индексами. Но вопрос не про скорость инсерта, а про затыки с HDD.

Скажем так, имеющиеся индексы вообще неадекватны ни одному (единственному, к слову) запросу поиска.

Если, при этом, нет понимания на затраты на перестроение индекса при вставке - то вперед, ботать матчасть.
Любой индекс - уменьшение скорости insert'а.

Хотя что-то мне подсказывает, что нам просто не все говорят...
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38556248
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
phasenoisepskcodedcompression,

Опять-таки, и мне лично это очевидно, даже без взгляда на shared_buffers (кстати, где он?) то, что идет пересвопинг индекса с HDD.
Потому что доперестраивались.
Потому что достроили ненужных индексов.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38556254
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И да, в плане издевательства, если у тебя, дорогой, shared_buffers тоже закомментирован, то есть по дефолту, то советую вызвать

show shared_buffers,

порыдать, почитать, почему так, подумать, еще раз подумать и отдать мне разницу между тем, что увидел в консоли, и наличествующей бесхозной памятью.
гыг.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38556282
phasenoisepskcodedcompression
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hawkmoonphasenoisepskcodedcompressionпропущено...

Не, ну есть конечно недоработки с индексами. Но вопрос не про скорость инсерта, а про затыки с HDD.

Скажем так, имеющиеся индексы вообще неадекватны ни одному (единственному, к слову) запросу поиска.

Если, при этом, нет понимания на затраты на перестроение индекса при вставке - то вперед, ботать матчасть.
Любой индекс - уменьшение скорости insert'а.

Хотя что-то мне подсказывает, что нам просто не все говорят...
Я не очень понимаю, почему мы говорим о скорости инсертов, когда вопрос стоит о юзании HDD. Интересует природа этого явления, а не скорость отработки каких-либо указанных запросов.
...
Рейтинг: 0 / 0
Чему тормозить в таком алгоритме работы?
    #38556283
phasenoisepskcodedcompression
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hawkmoonphasenoisepskcodedcompression,

Опять-таки, и мне лично это очевидно, даже без взгляда на shared_buffers (кстати, где он?) то, что идет пересвопинг индекса с HDD.
Потому что доперестраивались.
Потому что достроили ненужных индексов.
А что такое пересвопинг индекса с HDD?
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Чему тормозить в таком алгоритме работы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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