|
|
|
Оптимизация таблицы при большой интенсивности запросов к ней
|
|||
|---|---|---|---|
|
#18+
Привет все. Собственно не знал даже как правильно назвать тему. Опишу ситуацию. Есть таблица которая содержит порядка 3000 - 5000 записей. Если говорить о соотношении запросов к ней то : SELECT/INSERT/UPDATE 30%/60%/10%. По сути, это "Ахиллесова пята" нашей архитектуры БД. И она очень хорошо себя проявила на прошлой версии системы которая была на MariaDB. Точнее еще и есть. Но время позволило создать новую архитектуру на Postgres, и не хочется снова наступать на теже грабли. Опустим часть с индексами, оптимизированными запросами - поскольку они максимально простые. Т.е остаются проблемы: - конкретного доступа на уровне строк - дисковая система - мусор (vacuum) Вариант с MEMORY не подходит по причине использования потокой репликации. А теперь вопросы: 1. Насколько большая вероятность поймать deadlock или tablelock? И при каких обстоятельствах. 2. В партицировании я не вижу смысла, поскольку количество записей не большое. 3. Можно ли в Postgres вынести конкретную таблицу в отдельную директорию? на SSH например И как вы бы подошли к организации подобной архитектуры? Стремаюсь , поскольку в Mysql насмотрелся на висячие "Freeing item" и подобное. Ну там и железо было не ахти. Заранее всем благодарен за мысли!!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 13:11:01 |
|
||
|
Оптимизация таблицы при большой интенсивности запросов к ней
|
|||
|---|---|---|---|
|
#18+
Electric200А теперь вопросы: 1. Насколько большая вероятность поймать deadlock или tablelock? И при каких обстоятельствах. 2. В партицировании я не вижу смысла, поскольку количество записей не большое. 3. Можно ли в Postgres вынести конкретную таблицу в отдельную директорию? на SSH например 1)tablelock совсем невозможно а deadlock смотря как у вас транзакции устроены (и это не зависит явным образом от интенсивности записи) 2)да мысль правильная 3)да читайте про tablespaces PS: а как у вас получается что SELECT/INSERT/UPDATE 30%/60%/10% и при этом только 3000-5000 записей??? там черезе секунду уже будет 20.000 при высокой интесивности вставок. PPS: самое важное это чтобы длинных транзакций на базе у вас не висело при высокой активноси записи (иначе мусор будет быстро копится несмотря на autovacuum). PPPS: вообще имеет смысл сделать тестовую версию и погонять ее. --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 13:51:03 |
|
||
|
Оптимизация таблицы при большой интенсивности запросов к ней
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Спасибо. С инсертами там погорячился. их вообще очень мало будет и редко. По поводу авторсамое важное это чтобы длинных транзакций на базе у вас не висело при высокой активноси записи (иначе мусор будет быстро копится несмотря на autovacuum). Вот это умная мысль. Т.е запросы которые используют JOIN данное таблицы, лучше вынести на уровень приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 14:00:27 |
|
||
|
Оптимизация таблицы при большой интенсивности запросов к ней
|
|||
|---|---|---|---|
|
#18+
Electric200Maxim Boguk, Спасибо. С инсертами там погорячился. их вообще очень мало будет и редко. По поводу авторсамое важное это чтобы длинных транзакций на базе у вас не висело при высокой активноси записи (иначе мусор будет быстро копится несмотря на autovacuum). Вот это умная мысль. Т.е запросы которые используют JOIN данное таблицы, лучше вынести на уровень приложения. Я не понял как из моего комментария вы вывели "Т.е запросы которые используют JOIN данное таблицы, лучше вынести на уровень приложения." Это вообще никак не связанные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 14:14:42 |
|
||
|
Оптимизация таблицы при большой интенсивности запросов к ней
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Ну я это понял как: Есть запрос: SELECT ..... JOIN "та самая таблица" JOIN table JOIN table 1; Т.е избегать подобных запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 14:45:21 |
|
||
|
Оптимизация таблицы при большой интенсивности запросов к ней
|
|||
|---|---|---|---|
|
#18+
Electric200Maxim Boguk, Ну я это понял как: Есть запрос: SELECT ..... JOIN "та самая таблица" JOIN table JOIN table 1; Т.е избегать подобных запросов. нет вы поняли не правильно... я имел в виду begin; ... ушли курить на 10 минут или на 5 часов commit; вот так вот делать не надо... а собственно сложность запросов никак не связана с этим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 15:30:25 |
|
||
|
Оптимизация таблицы при большой интенсивности запросов к ней
|
|||
|---|---|---|---|
|
#18+
Maxim BogukElectric200Maxim Boguk, Ну я это понял как: Есть запрос: SELECT ..... JOIN "та самая таблица" JOIN table JOIN table 1; Т.е избегать подобных запросов. нет вы поняли не правильно... я имел в виду begin; ... ушли курить на 10 минут или на 5 часов commit; вот так вот делать не надо... а собственно сложность запросов никак не связана с этим. Так и я о том же. Если вместо "курить" будет запрос минут на 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 16:35:35 |
|
||
|
Оптимизация таблицы при большой интенсивности запросов к ней
|
|||
|---|---|---|---|
|
#18+
Electric200Maxim Bogukпропущено... нет вы поняли не правильно... я имел в виду begin; ... ушли курить на 10 минут или на 5 часов commit; вот так вот делать не надо... а собственно сложность запросов никак не связана с этим. Так и я о том же. Если вместо "курить" будет запрос минут на 10.\ запрос на 10 минут это надо постараться... хотя конечно возможно да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 16:52:08 |
|
||
|
Оптимизация таблицы при большой интенсивности запросов к ней
|
|||
|---|---|---|---|
|
#18+
Maxim BogukElectric200пропущено... Так и я о том же. Если вместо "курить" будет запрос минут на 10.\ запрос на 10 минут это надо постараться... хотя конечно возможно да. Запрос может и нет, но хранимка легко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 17:24:14 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=121&tid=1998429]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
58ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 325ms |

| 0 / 0 |
