LINUX.ORG.RU

68
Всего сообщений: 500

#RuPostgres Live 6. Максим Богук, DataEgret

Онлайн-митап. Ссылка: https://www.youtube.com/watch?v=kAz9sZdisnE

Начало через 10 минут.

Details
Подпишитесь на канал: https://www.youtube.com/c/RuPostgres — не пропустите трансляцию! (для этого есть «колокольчик») Там же будет чат для общения!

Очень глубокое погружение в очень продвинутый SQL.

В этот раз будет нечто ещё более безумное в плане онлaйна, чем раньше! Гигантский телемост Австралия — Калифорния — Германия — Россия %)

Подробнее о содержании митапа.

Не всегда проблемы производительности базы можно решить изменением настроек или простым созданием индексов. Когда эти простые способы не дают результата, в дело вступают более сложные техники, часто требующие переписывания запросов и тому подобной «дрессировки» оптимизатора.

С точки зрения разработчиков это отдает чёрной магией и выглядит очень сложным хакингом, однако, если разобраться в базовых принципах и научиться их комбинировать, можно добиться улучшения производительности на порядки.

Сегодняшний доклад посвещен нетривиальному использованию индексов для ускорения запросов.

Очень много внимания будет уделено обьяснению, как именно тот или иной приём работает и почему.

1. Использование INDEX ONLY SCAN для ускорения offset запросов
2. Использование индекса по (f1) для ускорения запросов ORDER BY f1, f2 LIMIT N
3. Использование индекса по (f2, f1) для ускорения запросов ORDER BY f1, f2 LIMIT N

В ближайшие месяцы будет продолжение этого доклада, посвящённое другим похожим задачам и проблемам.

 , , ,

bvn13 ()

DDL-запрос и select в одном Statement

Есть пара запросов, примерно таких:

drop table if exists temp_table ;
select * into temp table temp_table
	from real_table ;
select * from temp_table ;
create extension if exists dblink ;
select * from some_table ;

и соответственно примерно такой код:

try (Statement stmt = dataSource.getConnection().createStatement()) {
	boolean results = stmt.execute(request.query);
	while (results) {
		try (ResultSet rs = stmt.getResultSet()) {
			// process
		}
		results = stmt.getMoreResults();
	}
}

В результате Statement не возвращает ни одного ResultSet'а, хотя, если в запросе просто несколько select'ов, типа

select * from some_table ;
select * from another_table ;

Вопрос: почему statement не возвращает ResultSet('ы) и можно ли как-то эти запросы выполнить, чтобы возвращал?

// PostgreSQL 9.5

 ,

korvin_ ()

select from jsonb

Мне нужно выбрать строку в которой есть определенное значение в json. С строками проблем нет. Положим я ищу строку в которой есть json в котором есть объект с «a» равным «2»:

xxx=> DROP TABLE IF EXISTS z;
DROP TABLE
xxx=> CREATE TABLE z (id bigint, value jsonb);
CREATE TABLE
xxx=> INSERT INTO z (id, value) VALUES (1, '{ "a" : "1" }');
INSERT 0 1
xxx=> INSERT INTO z (id, value) VALUES (2, '{ "a" : "2" }');
INSERT 0 1
xxx=> INSERT INTO z (id, value) VALUES (3, '{ "a" : "3" }');
INSERT 0 1
xxx=> SELECT * FROM z WHERE value->>'a' = '2';
 id |   value    
----+------------
  2 | {"a": "2"}
(1 строка)

Теперь положим что в json массив объектов и если в одном из объектов есть определенное текстовое поле, то мне нужна эта строка:

xxx=> DROP TABLE IF EXISTS z;
DROP TABLE
xxx=> CREATE TABLE z (id bigint, value jsonb);
CREATE TABLE
xxx=> INSERT INTO z (id, value) VALUES (1, '{ "b" : [ { "name" : "b1a" }, { "name" : "b1b" }, { "name" : "b1c" } ] }');
INSERT 0 1
xxx=> INSERT INTO z (id, value) VALUES (2, '{ "b" : [ { "name" : "b2a" }, { "name" : "b2b" }, { "name" : "b2c" } ] }');
INSERT 0 1
xxx=> INSERT INTO z (id, value) VALUES (3, '{ "b" : [ { "name" : "b3a" }, { "name" : "b3b" }, { "name" : "b3c" } ] }');
INSERT 0 1

Положим я ищу строку в которой есть json в котором есть массив в котором есть объект с «name» равным «b2b». Что то я туплю, подскажите плиз как должен выглядеть select?

 

quester ()

ERROR: directory is already being watched!

Есть приложение на rails с использованием бд postgresql. При попытки выполнить миграцию ($ rake db:migrate) выходит следующая ошибка:

(in /home/user/apps/program)
        ** ERROR: directory is already being watched! **

        Directory: /home/user/apps/program/releases/20171224133358

        is already being watched through: /home/user/apps/program/releases/20171224133358

        MORE INFO: https://github.com/guard/listen/wiki/Duplicate-directory-errors
        ** ERROR: directory is already being watched! **

        Directory: /home/user/apps/program/current/log

        is already being watched through: /home/user/apps/program/shared/log

        MORE INFO: https://github.com/guard/listen/wiki/Duplicate-directory-errors
        ** ERROR: directory is already being watched! **

        Directory: /home/user/apps/program/current/frontend/node_modules

        is already being watched through: /home/user/apps/program/shared/frontend/node_modules

        MORE INFO: https://github.com/guard/listen/wiki/Duplicate-directory-errors
        ** ERROR: directory is already being watched! **

        Directory: /home/user/apps/program/current/tmp/cache

        is already being watched through: /home/user/apps/program/shared/tmp/cache

        MORE INFO: https://github.com/guard/listen/wiki/Duplicate-directory-errors
        ** ERROR: directory is already being watched! **

        Directory: /home/user/apps/program/current/tmp/pids

        is already being watched through: /home/user/apps/program/shared/tmp/pids

        MORE INFO: https://github.com/guard/listen/wiki/Duplicate-directory-errors
        ** ERROR: directory is already being watched! **

        Directory: /home/user/apps/program/current/tmp/sockets

        is already being watched through: /home/user/apps/program/shared/tmp/sockets

        MORE INFO: https://github.com/guard/listen/wiki/Duplicate-directory-errors
        ** ERROR: directory is already being watched! **

        Directory: /home/user/apps/program/current/public/system

        is already being watched through: /home/user/apps/program/shared/public/system

        MORE INFO: https://github.com/guard/listen/wiki/Duplicate-directory-errors
        ** ERROR: directory is already being watched! **

        Directory: /home/user/apps/program/current/vendor/bundle

        is already being watched through: /home/user/apps/program/shared/vendor/bundle

        MORE INFO: https://github.com/guard/listen/wiki/Duplicate-directory-errors
== 20170518043248 CreateUsers: migrating =======================
-- create_table(:users)
   -> 0.0767s
-- add_index(:users, :email, {:unique=>true})
   -> 0.0348s
-- add_index(:users, :login, {:unique=>true})
   -> 0.0474s
-- add_index(:users, [:uid, :provider], {:unique=>true})
   -> 0.0420s
-- add_index(:users, :reset_password_token, {:unique=>true})
   -> 0.0337s
-- add_index(:users, :confirmation_token, {:unique=>true})
   -> 0.0251s
== 20170518043248 CreateUsers: migrated (0.2605s) ==============

 ,

zivajerur ()

Ищем Django/Python developer middle удаленно или в офис СПБ

Всем добрейшего времени суток. SMYT продолжает поиски Django/Python developer. Мы специализируемся на разработке и внедрении сложных ИТ решений. Основные направления деятельности компании - крупные веб-проекты, автоматизация бизнеса и мобильные приложения.

Требования к кандидату: 1. Опыт разработки на Python\ Django от 1 года. 2. Уверенное знание SQL Приветствуются: 1. Опыт работы с PostgreSQL или других RDBMS. 2. Знание Linux (Debian/Ubuntu) или других *nix. 3. Знание других языков/фреймворков (Java, php, .NET, C/C++). 4. Наличие OpenSource-проектов или участие в них. 5. Опыт работы с MongoDB, Redis, Celery, RabbitMQ, WebSockets

Чем предстоит заниматься: 1.Разработка программного кода согласно утвержденному ТЗ. 2.Работа над крупными интернет и корпоративными проектами (с некоторыми из них вы можете ознакомиться здесь http://www.smyt.ru/projects/). 3.Участие в разработке корпоративных систем. Условия работы: 1. Постоянная удаленная работа или работа в офисе Санкт-Петербурга на Василевском острове. 2. Занятость до 40 часов в неделю. 3. Почасовая оплата (с ростом Вашего профессионализма будет расти и Ваша ставка). Рейт может составлять от 500 до 1000 р в час в зависимости от уровня квалификации. 3. Свободный график – Вы сами выбираете время, удобное для продуктивной работы.

Ждем Ваши отклики на hr@smyt.ru либо добавьте в скайпе live:hr_12502

 , ,

Nevskay_Irina ()

Отзыв прав пользователю postgresql на чтение системных таблиц

Всем привет!

Выдаю права на чтение системных таблиц для пользователя postgresql так:

psql -U postgres -d userdb -c \"GRANT SELECT ON pg_settings TO user;\" 

В результате получилась такая таблица выданных прав:

userdb=> SELECT * FROM information_schema.role_table_grants;
 grantor  | grantee  | table_catalog | table_schema | table_name  | privilege_type | is_grantable | with_hierarchy 
----------+----------+---------------+--------------+-------------+----------------+--------------+----------------
 postgres | user | userdb    | pg_catalog   | pg_settings | SELECT         | NO           | YES
 postgres | user | userdb    | pg_catalog   | pg_shadow   | SELECT         | NO           | YES
 postgres | user | userdb    | pg_catalog   | pg_authid   | SELECT         | NO           | YES
 postgres | user | userdb    | pg_catalog   | pg_database | SELECT         | NO           | YES
(4 rows)

Как правильно отозвать права пользователю postgresql на чтение системных таблиц ?

userdb=> REVOKE SELECT FROM information_schema.role_table_grants WHERE table_name='pg_settings' ;
ERROR:  syntax error at or near "."
LINE 1: REVOKE SELECT FROM information_schema.role_table_grants WHER...
                                             ^
userdb=> REVOKE SELECT ON information_schema.role_table_grants WHERE table_name='pg_settings' FROM user ;
ERROR:  syntax error at or near "WHERE"
LINE 1: ...KE SELECT ON information_schema.role_table_grants WHERE tabl...
                                                             ^
userdb=> REVOKE SELECT ON information_schema.role_table_grants WHERE table_name='pg_settings' FROM 'user' ;
ERROR:  syntax error at or near "WHERE"
LINE 1: ...KE SELECT ON information_schema.role_table_grants WHERE tabl...
                                                             ^
userdb=> REVOKE SELECT FROM information_schema.role_table_grants WHERE table_name='pg_settings' ;
ERROR:  syntax error at or near "."
LINE 1: REVOKE SELECT FROM information_schema.role_table_grants WHER...

 

chemtech ()

отправка дампа на удалённую машину

Пытаюсь создать дамп базы данных postgresql сразу на удалённой машине, без создания локально. Перебрал варианты синтаксиса, какие смог придумать, не работает. Подскажите правильную строчку?

scp 'pg_dump -U postgres testbase > testbase.sql' username@remotehost:/mnt/

 ,

danver ()

Pgpool-2 не использует slave для балансировки нагрузки

На двух серверах установлен postgres 9.5.10 из репозитория ubuntu xenial. На главном сервере установлен pgpool 3.7.0 из исходников (./configure --with-openssl --with-memcached=/usr/include/memcached). Конфиг pgpool-а такой: https://pastebin.com/qWWgejQN

Здесь видно, что я указал обе ноды, отключил репликацию средствами pgpool, включил опцию master/slave и добавил кеширование memcached. Но что бы я ни делал, пулер не хочет обращаться к slave-ноде:

postgres=# show pool_nodes;
 node_id |    hostname    | port | status | lb_weight |  role   | select_cnt | load_balance_node | replication_delay 
---------+----------------+------+--------+-----------+---------+------------+-------------------+-------------------
 0       | localhost      | 5433 | up     | 0.500000  | primary | 0          | true              | 0
 1       | host2          | 5433 | unused | 0.500000  | standby | 0          | false             | 0
(2 rows)

Что можно предпринять? В любой статье пишут, что это очень легко, но я уже пробовал даже заюзать идущий в комплекте конфиг, который заточен именно на streaming replication и всё равно все запросы идут только на мастер.

 , ,

abr_linux ()

Работа с Clojure/Clojurescript

Всем привет. Есть вакансия в компанию для работы на Clojure/Clojurescript. Текст вакансии ниже:

HealthIT cloud platform based on FHIR Standard

Город:

Санкт-Петербург

Требуемый опыт работы:

3–6 лет

Требования:

  • Приветствуется знание и осознанная тяга к clojure/clojurescript
  • Способность быстро обучаться
  • Знание или острое желание выучить английский язык
  • Профессиональные амбиции
  • Any 5 languages (ruby, python, go-lang, ocaml, erlang, c, rust, java, C# …)
  • Готовность выполнить техническое задание.

Technology Stack:

  • Functional & imperative programming (logical & relational is ok)
  • Clojure
  • Clojurescript (reagent, re-frame, rum)
  • js/html/css/scss/jsx/hiccup/xhtml
  • PostgreSQL
  • Devops (docker, terraform, CI, CD)
  • Linux
  • Emacs or vim

Условия:

  • Большой офис в центре города с велопарковкой, в двух минутах ходьбы от м. Адмиралтейская
  • Оформление по ТК
  • ДМС
  • Уроки английского языка
  • Карьерный и профессиональный рост
  • Игры, масштабные корпоративные мероприятия, выезды на природу
  • Вкусный чай и кофе в неограниченных количествах.

Ключевые навыки:

  • clojure
  • clojurescript
  • reagent
  • rum
  • PostgreSQL
  • Linux
  • HTML
  • JavaScript
  • HTML5
  • Java
  • Python
  • Erlang
  • Ruby
  • Английский язык

Зарплатная вилка:

100-200 тысяч рублей.

Адрес:

Санкт-Петербург, Большая Морская улица, 19

Тип занятости:

Полная занятость, полный день, возможность удаленной работы.

Резюме можно отправлять на vyacheslav.mik.8@health-samurai.io.

 , , ,

Bormotuhin ()

Помочь за деньги с ошибкой londiste ERROR Node 'slave_IP' already exists

Писал в нескольких местах. Пока никто не помог. Поэтому за помощь готов заплатить. Заказ размещен на Фрилансим https://freelansim.ru/tasks/184411

Тут скопирую технические данные и вопрос

я использовал londiste для логической репликации между PostgreSQL 9.3 и 9.5 Через некоторое время я снова начал использовать снова londiste.

Но я не удалил узел после использования londiste. List package

 yum list skytools*
Installed Packages
skytools-95.x86_64           3.2.6-1.rhel7
skytools-95-modules.x86_64   3.2.6-1.rhel7

Config master
cat /etc/skytools/londiste-master.ini
[londiste3]
job_name = appqueue
db = dbname=my_database host=master_IP
queue_name = appqueue
logfile = /var/log/skytools/master.log
pidfile = /var/run/skytools/master.pid

Config Slave

cat /etc/skytools/londiste-slave.ini 
[londiste3]
job_name = appqueue
db = dbname=my_database
queue_name = appqueue
logfile = /var/log/skytools/slave.log
pidfile = /var/run/skytools/slave.pid

Install scheme

qadmin -h master_IP -U postgres -d my_database -c "install londiste"
INSTALL

Copy DB

pg_dump -h master_IP -s -C -U postgres my_database |psql -U postgres

create-root master_IP

su postgres -c "londiste3 /etc/skytools/londiste-master.ini create-root master_IP 'dbname=my_database host=master_IP'"
2017-10-27 08:36:16,250 20249 INFO plpgsql is installed
2017-10-27 08:36:16,250 20249 INFO pgq is installed
2017-10-27 08:36:16,252 20249 INFO pgq.get_batch_cursor is installed
2017-10-27 08:36:16,252 20249 INFO pgq_ext is installed
2017-10-27 08:36:16,253 20249 INFO pgq_node is installed
2017-10-27 08:36:16,254 20249 INFO londiste is installed
2017-10-27 08:36:16,254 20249 INFO londiste.global_add_table is installed
2017-10-27 08:36:16,262 20249 INFO Node is already initialized as root

create-leaf slave_IP

su postgres -c "londiste3 /etc/skytools/londiste-slave.ini create-leaf slave_IP dbname=my_database --provider='host=master_IP dbname=my_database'"
2017-10-27 08:37:10,984 20414 WARNING No host= in public connect string, bad idea
2017-10-27 08:37:10,991 20414 INFO plpgsql is installed
2017-10-27 08:37:10,992 20414 INFO pgq is installed
2017-10-27 08:37:10,993 20414 INFO pgq.get_batch_cursor is installed
2017-10-27 08:37:10,993 20414 INFO pgq_ext is installed
2017-10-27 08:37:10,994 20414 INFO pgq_node is installed
2017-10-27 08:37:10,994 20414 INFO londiste is installed
2017-10-27 08:37:10,994 20414 INFO londiste.global_add_table is installed
2017-10-27 08:37:11,006 20414 INFO Initializing node
2017-10-27 08:37:11,022 20414 ERROR Node 'slave_IP' already exists

Run londiste3 master and slave worker

su postgres -c "londiste3 -d /etc/skytools/londiste-slave.ini worker"
Ignoring stale pidfile

su postgres -c "londiste3 -d /etc/skytools/londiste-master.ini worker"
Ignoring stale pidfile

Run pgqd

pgqd -d /etc/skytools/pgqd.ini
2017-10-27 08:38:31.638 20659 LOG Starting pgqd 3.2.6

Master status

su postgres -c "londiste3 /etc/skytools/londiste-master.ini status"
Queue: appqueue   Local node: master_IP

None (None)
                              Tables: 0/0/0
                              Lag: (n/a), NOT UPTODATE
master_IP (root)
                              Tables: 0/0/0
                              Lag: 17h56m7s, Tick: 1</code>

Try Delete node:
su postgres -c "londiste3 /etc/skytools/londiste-slave.ini drop-node slave_IP"
2017-10-27 09:20:50,945 29464 ERROR get_node_database: cannot resolve slave_IP

su postgres -c "londiste3 /etc/skytools/londiste-slave.ini drop-node slave_IP dbname=my_database"
2017-10-27 09:21:17,859 29543 ERROR command 'drop-node' got 2 args, but expects 1: node_name

su postgres -c "londiste3 /etc/skytools/londiste-master.ini drop-node master_IP"
2017-10-27 09:24:32,038 30190 ERROR node still has subscribers


Как правильно исправить эту ошибку?

 

chemtech ()

Postgres recovery from xid

В postgres есть клевая штука, как recovery_target_xid

Можно восстановиться к конкретной транзакции, указав ее номер.

Все хорошо, но! столкнулся с проблемой, что в файле с логами у меня нет этих самых номеров транзакций :)

Да, номера можно вытягивать через pg_xlogdump, но это тот еще секс.

Посоветуйте, как можно писать номера транзакций в обычном файле с логами.

Сейчас конфиг выглядить вот так:

log_statement = 'mod'
log_line_prefix = 'db=%d,user=%u '

Пробовали добавлять ключи %x и %v, как это указано в документации, https://postgrespro.ru/docs/postgrespro/9.6/runtime-config-logging однако, не помогло.

 , ,

imho9 ()

SQL-запрос, выдающий место в рейтинге (postgresql)

Имеется таблица users со следующей схемой:

vr=# select * from users;
 id |   name   |          regdate           | raiting 
----+----------+----------------------------+---------
  1 | me       | 2017-11-03 23:51:54.411796 |     -16
  2 | postgres | 2017-11-04 18:58:53.671633 |       0
  3 | root     | 2017-11-11 00:27:43.082693 |       0
(3 rows)

Необходимо выдавать место в рейтинге. Мне приходит в голову только сортировка по полю raiting с помощью order by, а потом работа в приложении c этой информацией. Может есть и другие пути?

 ,

cetjs2 ()

PostgreSQL и агрегация данных

Приветствую, ЛОР!

Помогите, пжлста, составить запрос.

Есть таблица, вида:

id: pk
some_id: integer
clicks: integer
...

Нужно посчитать для каждого some_id (т.е. сгруппировать по some_id) сумму первых 10 clicks если количество clicks для some_id > 10;

Сложная для меня агрегация получается, уже битый час сижу, не могу допетрить...

ПоможИте, чем можИте, бывалые SQL-щики. С меня лучи бобра.

 , , ,

djnoob ()

Помочь за деньги с ошибкой londiste ERROR Node 'slave_IP' already exists

Писал в нескольких местах. Пока никто не помог. Поэтому за помощь готов заплатить. Заказ размещен на Фрилансим https://freelansim.ru/tasks/184411

Тут скопирую технические данные и вопрос

я использовал londiste для логической репликации между PostgreSQL 9.3 и 9.5 Через некоторое время я снова начал использовать снова londiste.

Но я не удалил узел после использования londiste. List package

 yum list skytools*
Installed Packages
skytools-95.x86_64           3.2.6-1.rhel7
skytools-95-modules.x86_64   3.2.6-1.rhel7

Config master
cat /etc/skytools/londiste-master.ini
[londiste3]
job_name = appqueue
db = dbname=my_database host=master_IP
queue_name = appqueue
logfile = /var/log/skytools/master.log
pidfile = /var/run/skytools/master.pid

Config Slave

cat /etc/skytools/londiste-slave.ini 
[londiste3]
job_name = appqueue
db = dbname=my_database
queue_name = appqueue
logfile = /var/log/skytools/slave.log
pidfile = /var/run/skytools/slave.pid

Install scheme

qadmin -h master_IP -U postgres -d my_database -c "install londiste"
INSTALL

Copy DB

pg_dump -h master_IP -s -C -U postgres my_database |psql -U postgres

create-root master_IP

su postgres -c "londiste3 /etc/skytools/londiste-master.ini create-root master_IP 'dbname=my_database host=master_IP'"
2017-10-27 08:36:16,250 20249 INFO plpgsql is installed
2017-10-27 08:36:16,250 20249 INFO pgq is installed
2017-10-27 08:36:16,252 20249 INFO pgq.get_batch_cursor is installed
2017-10-27 08:36:16,252 20249 INFO pgq_ext is installed
2017-10-27 08:36:16,253 20249 INFO pgq_node is installed
2017-10-27 08:36:16,254 20249 INFO londiste is installed
2017-10-27 08:36:16,254 20249 INFO londiste.global_add_table is installed
2017-10-27 08:36:16,262 20249 INFO Node is already initialized as root

create-leaf slave_IP

su postgres -c "londiste3 /etc/skytools/londiste-slave.ini create-leaf slave_IP dbname=my_database --provider='host=master_IP dbname=my_database'"
2017-10-27 08:37:10,984 20414 WARNING No host= in public connect string, bad idea
2017-10-27 08:37:10,991 20414 INFO plpgsql is installed
2017-10-27 08:37:10,992 20414 INFO pgq is installed
2017-10-27 08:37:10,993 20414 INFO pgq.get_batch_cursor is installed
2017-10-27 08:37:10,993 20414 INFO pgq_ext is installed
2017-10-27 08:37:10,994 20414 INFO pgq_node is installed
2017-10-27 08:37:10,994 20414 INFO londiste is installed
2017-10-27 08:37:10,994 20414 INFO londiste.global_add_table is installed
2017-10-27 08:37:11,006 20414 INFO Initializing node
2017-10-27 08:37:11,022 20414 ERROR Node 'slave_IP' already exists

Run londiste3 master and slave worker

su postgres -c "londiste3 -d /etc/skytools/londiste-slave.ini worker"
Ignoring stale pidfile

su postgres -c "londiste3 -d /etc/skytools/londiste-master.ini worker"
Ignoring stale pidfile

Run pgqd

pgqd -d /etc/skytools/pgqd.ini
2017-10-27 08:38:31.638 20659 LOG Starting pgqd 3.2.6

Master status

su postgres -c "londiste3 /etc/skytools/londiste-master.ini status"
Queue: appqueue   Local node: master_IP

None (None)
                              Tables: 0/0/0
                              Lag: (n/a), NOT UPTODATE
master_IP (root)
                              Tables: 0/0/0
                              Lag: 17h56m7s, Tick: 1</code>

Try Delete node:
su postgres -c "londiste3 /etc/skytools/londiste-slave.ini drop-node slave_IP"
2017-10-27 09:20:50,945 29464 ERROR get_node_database: cannot resolve slave_IP

su postgres -c "londiste3 /etc/skytools/londiste-slave.ini drop-node slave_IP dbname=my_database"
2017-10-27 09:21:17,859 29543 ERROR command 'drop-node' got 2 args, but expects 1: node_name

su postgres -c "londiste3 /etc/skytools/londiste-master.ini drop-node master_IP"
2017-10-27 09:24:32,038 30190 ERROR node still has subscribers


Как правильно исправить эту ошибку?

 

chemtech ()

Проектирование баз данных SQL

Что по теме почитать желательно, а что обязательно?

 , ,

Dron ()

postgres запускается, но не запускается

Знаю, что уже замылили эту тему, но все, что я нашел не помогло или не соответствует моей ситуации, так что прошу помощи знатоков.

Итак, запускаю

/etc/init.d/postgresql start

на что получаю сообщение, что все ok

проверяю

# sudo -u postgres psql template1
psql: could not connect to server: Connection refused
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?


ладушки... гугл в помощь... но не тут то было..
lsof | grep PGSQL

пусто

# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      717/nginx -g daemon
tcp        0      0 0.0.0.0:8069            0.0.0.0:*               LISTEN      514/python
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      717/nginx -g daemon
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      665/sshd
tcp6       0      0 :::80                   :::*                    LISTEN      717/nginx -g daemon
tcp6       0      0 :::22                   :::*                    LISTEN      665/sshd
опять пусто и в логах пусто... во всех, что я смог найти..
# uname -a
Linux 82608.local 4.4.0-98-generic #121-Ubuntu SMP Tue Oct 10 14:24:03 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
root@82608:/var/run/postgresql#

при запуске ошибок не выдает но и не запускается.. как так? при этом

# /etc/init.d/postgresql status
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2017-11-08 10:32:43 MSK; 26min ago
  Process: 11432 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 11432 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/postgresql.service

Nov 08 10:32:43 82608.local systemd[1]: Starting PostgreSQL RDBMS...
Nov 08 10:32:43 82608.local systemd[1]: Started PostgreSQL RDBMS.
Nov 08 10:43:03 82608.local systemd[1]: Started PostgreSQL RDBMS.
Но и в HTOP процесса с PID 11432 нету... я ничего не понимаю

 ,

darkozoid ()

SQL. Помогите с запросом.

Новичек в SQL. Столкнулся с такой проблемой.

Есть таблица A:

id: integer

Есть несколько таблиц от B-F:

a_id: integer,
mystr: varchar(100)

Требуется посчитать количество записей в A, для которых __количество__ mystr (по всем таблицам B-F) > N (ну скажем N=100). Т.е. на выходе долно получиться одно число.

 , , ,

Sektor ()

PostgreSQL помогите с запросом

Всем привет.

Хочу найти все id записей у кторых в VARCHAR-поле есть длинные слова. Для этого, как я полагаю, нужно посплитить строку по пробелам, пробежаться по получившемуся массиву и для каждого элемента проверить длину слова. Но понятия не имею как такой фокус провернуть на sql.

 id    | integer
 mystr | character varying(255) | not null
 ...

Может кто сталкивался с подобной задаче, подскажите, плиз.

 , , ,

djnoob ()

postgresql как изменить тип поля с integer на serial?

интересно, почему

alter table users alter COLUMN id type serial;
выдает такое?
ERROR:  type "serial" does not exist

Кроме создания заново таблицы ничего не приходит на ум...

postgresql 9.6.5

 ,

cetjs2 ()

Настройка Postgres для быстрого SSD

Взял у Селектела в тест сервак для тестирования хваленого SSD Intel P4800X.

Написал тест, который в многопотоке делает INSERTы в PostgreSQL по одному (не batch). Получил прирост производительности относительно HDD RAID10 примерно в два раза. Тесты чтения будут позже.

Как выжать все соки из SSD с помощью Postgres? iostat -dx показывает утилизацию SSD ~20%. Предполагаю что проблема с конфигом PostgreSQL,

 ,

exst ()