|
|
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
Добрый день! сервер у меня не очень мощный, я бы даже сказал не очень свежий тестовый компьютер (i5-2,3GHz, RAM -8 gb, отдельный диск под БД). проблема в следующем, в таблицу с двумя колонками надо занести из файла (2Гб) информацию. в файле 150 м строк. 40м строк заносятся нормально. а после 60м все встает колом. top показывает 100% загрузку процессара процессом kworker, даже в консоле тяжело перемещатся по директориям. вставка идет через функцию, которая сначала делает селект если таких значений не находит то делается инсерт. сначало думал что баг в ядре, обновил ядро до 3.15. проблема не решилась. потом вычитал что если очень большой обьем инсерта, то переодически надо делать vacuum analyze таблицы. начал делать вакумм анализе через каждые 1м строк. но и это проблему не решило. у людей базы по 300Гб и всё работает, а тут затык на 2Гб данных. у кого какие соображения есть? в какую сторону копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 09:12 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
easaвставка идет через функциючерез хранимую? если таблица пустая, сформируй файл для copy, отфильтровав уникальные (sort -u). или создай индекс. или залей в другую таблицу и вставь только отсутствующие одним инсертом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 09:58 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
p2., в этой таблице есть индекс UNIQUE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 10:04 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
p2., функция хранимая, хотел из нее триггер сделать. но думаю что быстрее от этого работать не будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 10:14 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
easa, А чем не нравится использование COPY При ваших объемах я бы через нее заливал данные в промежуточную таблицу , а далее бы уже обрабатывал логикой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 10:15 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
dvim, а пример использования можно увидеть? ни разу таким способом не пользовался. а если файл на более мелкие файлы разбивать и их частями загружать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 10:17 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
Про COPY вполне понятно расписано в документации: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 10:48 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 10:50 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
Dmitry_SV, а если таблица не пустая и надо исключить в таблице наличие дублирующих записей, как тогда быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 10:57 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
easa, Вам уже предлагали: загружайте данные в отдельную временную таблицу. Затем разбирайтесь с данными уже внутри базы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 11:03 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
ursido, спасибо, направление решения данного вопроса понял. буду пробовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 11:09 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
easa, Грузите в пустую временную таблицу, без индексов и триггеров. А уже потом загруженное - обрабатываете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 12:19 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
dvim, не получается у меня сделать копи в таблицу пишет следующее: ОШИБКА: для использования COPY с файлами нужно быть суперпользователем ПОДСКАЗКА: Не имея административных прав, можно использовать COPY с stdout и stdin (а также команду psql \copy). а права повышать не очень охото ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 13:25 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
easaа права повышать не очень охотои подсказками пользоваться мама не велит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 13:28 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
\copy замечательно все заносит в базу. а как добавить copy в хранимую функцию? copy заносится нормально, но не работает. а \copy не заносится, ругается на бэкслеш, может надо как то экранировать? можно ли copy через функцию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 09:45 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
easaа права повышать не очень охото security definer же не ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 11:19 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
итоги оптимизации такие. сделал на большую таблицу партицирование. разбил что бы в каждой таблице было не больше 10м. записей. в каждой таблице свои индексы. но появился вопрос. в документации написано что надо делать представление, сделал. но почему то и без представления делается замечательно выборка из главной таблицы. хотя в оф доке конкретно про представление. получается что оно не нужно? второй вопрос. copy замечательно работает. но когда я добавил столбы в копи для функции, она перестала работать. в логах пишет, что команда вернула 2 строки. хотя из консоли таже самая команда замечательно работает. вот пример команды copy: Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 08:49 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
Вам на этот вопрос сам форум ответ дал. Присмотритесь к подсветке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 12:11 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
Warstone, кроме опечатки в DROP TABLE ничего не увидел. покажите где ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 15:15 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
easa, В при выполнении запроса в обычном режиме в его тексте содержатся символы кавычки ('). Затем при вставке выражения в EXECUTE вся строка была заключена в те же кавычки ('). Внимание, вопрос: что произошло с оставшимися неизменными символами внутри строки? А не применить ли экранирование? (На что и намекает подсветка) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 15:29 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
ursido, Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 15:50 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
tadmin, Тогда для полной картины и на пробелы нужно внимание обратить: Код: sql 1. после FROM и перед DELIMITERS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 15:56 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
кавыки пересчитайте PS was used before PostgreSQL version 7.3 and is still supported: а сейчас пот такб надо бы: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2015, 16:10 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
qwwq, с copy разобрался, спасибо. а с первым вопросом как быть? повторю свой первый вопрос: итоги оптимизации такие. сделал на большую таблицу партицирование. разбил что бы в каждой таблице было не больше 10м. записей. в каждой таблице свои индексы. но появился вопрос. в документации написано что надо делать представление, сделал. но почему то и без представления делается замечательно выборка из главной таблицы. хотя в оф доке конкретно про представление. получается что оно не нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 08:53 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
easaqwwq, с copy разобрался, спасибо. а с первым вопросом как быть? повторю свой первый вопрос: итоги оптимизации такие. сделал на большую таблицу партицирование. разбил что бы в каждой таблице было не больше 10м. записей. в каждой таблице свои индексы. но появился вопрос. в документации написано что надо делать представление, сделал. но почему то и без представления делается замечательно выборка из главной таблицы. хотя в оф доке конкретно про представление. получается что оно не нужно? я с голосами в голове предпочитаю не разговаривать. особо -- в чужой где говорится, в какой документации ? [тынц, +квота] , что сделал -- это код, а не брехня по поводу и без ну и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 10:22 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
qwwq, дока вот http://www.postgresql.org/docs/current/static/ddl-partitioning.html. делал всё по доке, думаю что код дублировать не имеет смысла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 10:43 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
easa, там говорится что "Partitioning can also be arranged using a UNION ALL view, instead of table inheritance ". т.е. создавать вью не обязательно, просто таким образом можно воспроизвести функционал наследования таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 10:59 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
появился еще один вопрос. если я делаю выборку из таблицы и использую ORDER BY по дате, то для ускорения выборки необходимо сделать индексирования столбца с датой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 11:19 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
easa, PostgreSQL не поддерживает multi-table индексы, поэтому если запрос вернет данные из нескольких таблиц-партиций, то будет сортировка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 11:37 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
vyegorov, то есть, если есть таблицы-партиции то столбцы бессмыслено индексировать? больше нет никаких вариантов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 11:42 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
easa, Я этого не сказал. Индекс может вернуть отсортированные данные только в рамках одной таблицы. Если данные из нескольких таблиц, то будут явные сортировки. Рассматривайте конкретные схему и данные с конкретным запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 12:16 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
vyegoroveasa, PostgreSQL не поддерживает multi-table индексы, поэтому если запрос вернет данные из нескольких таблиц-партиций, то будет сортировка.какбе это неверное утверждение. поцгресс умеет таки merge append. Но оно имеет смысл только если есть существенный LIMIT , или вся выборка --IOT. и если ORDER BY полностью покрыт индексом. Если после индекс--листа добавить уникЪюцирующее поле -- это поделие свалится к sort [all] + limit. И придётся делать пассы руками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 12:40 |
|
||
|
linux postgresql вопросы по производительности
|
|||
|---|---|---|---|
|
#18+
easaпоявился еще один вопрос. если я делаю выборку из таблицы и использую ORDER BY по дате, то для ускорения выборки необходимо сделать индексирования столбца с датой? Это вопрос про сферического коня в вакууме, нужно конкретный запрос видеть всегда чтобы на такой вопрос ответить. И его explain analyze. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 13:14 |
|
||
|
|

start [/forum/topic.php?all=1&fid=53&tid=1997593]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
202ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 576ms |

| 0 / 0 |
