Postgre. "Адміністрування" через консоль.

Postgre. "Адміністрування" через консоль.

Власне, в mysql все просто mysql -u -p . далі show proceslist і kill особливо злісні селективи.

А в Postgre SQL є щось подібне? 1. Ну чи можна зайти в консоль де можна робити різні селективи? 2. Чи можна з неї подивитись які SELECT виконуються?

Sad Spirit

мізантроп (Старожил PHPClub)

Власне в PostgreSQL теж не дуже складно, але рекомендується RTFM.

Консоль, як було зазначено, називається psql

PHPПенсіонер

psql - це якщо ім'я користувача збігається з логіном або psql -U Пароль:

# - з'являється запрошення працювати в консолі або надсилати на.

Прописав у конфізі змінну.

stk1=# SELECT * FROM pg_stat_activity; datid datname procpid usesysid usename current_query query_start -----------+---------+---------+----- -----+---------+---------------+------------------ ------------- 112118743 stk1 32158 100 stk 2006-03-17 11:57:29.54649+03

А що зробити що б замість було б тіло запиту? таке взагалі можна зробити? У mysql (якщо пам'ять не змінюю) це робилося show fulprocesslist; Тут є така штука?

Дивна новина. Іноді особливо довготривалі запити пишуться. Мабуть, це коли немає запитів І до речі в mysql пишеться час виконання запиту. У постгрі таке можна десь налаштувати? (при запитах з консолі)

Sad Spirit

мізантроп (Старожил PHPClub)

Нахрена? Міритися з колегами у кого швидше?

Якщо є проблеми зі швидкодією конкретного запиту, то є команда EXPLAIN ANALYZE, яка покаже, серед іншого, час виконання.

Так, а щодо pg_stat_activity, то там виявляютьсяфактично лише тривалі запити. Чому так - див. документацію, близьку до тексту її переказ тут - за окремі гроші.

так Так. Вже зрозуміли. Ні. Зовсім не міряється з колегами. З цією метою особливо довгі запити виципляти. І їх аналізувати чи мочити.

Ось тут у нас табличка на кілька мільйонів записів. Робимо select id,field1 від table where id>5000000 order by id limit 50; Такий запит виконується досить - десятки секунд. Знаючі колеги, що вкурили мануал, порекомендували REINDEX і VACUM ANALIZE.

Я звичайно все забекапил, але скажіть я так не вб'ю власне сервер нафік? І якщо я правильно розумію таблицю буде залочена на час виконання зазначених дій?

Sad Spirit

мізантроп (Старожил PHPClub)

Що каже команда EXPLAIN? Який тип поля ID і версія сервера?

Знаючі колеги, що вкурили мануал, порекомендували REINDEX і VACUM ANALIZE.

Я звичайно все забекапил, але скажіть я так не вб'ю власне сервер нафік? І якщо я правильно розумію таблицю буде залочена на час виконання зазначених дій?

[SQL] SELECT "id", "msisdn", "news_id", "timestamp" FROM "Clients_log" WHERE "id" > 5511531 LIMIT 5; [/SQL]

- Виконується 25 секунд.

explain SELECT "id", "msisdn", "news_id", "timestamp" FROM "Clients_log" WHERE "id" > 5511531 LIMIT 5; QUERY PLAN ------------------------------------------ ----------------------------------- Limit (cost=0.00..17.88 rows=5 w > -> Seq Scan on "Clients_log" (cost=0.00..102994.95 rows=28804 w > Filter: (id > 5511531)

CREATE TABLE "Clients_log" ( id int8 NOT NULL DEFAULT nextval('public."Clients_log_id_seq"'::text), msisdn varchar(15) NOT NULL, news_id int8 NOT NULL, "timestamp"timestamp NOT NULL, CONSTRAINT "PK_Clients_log" PRIMARY KEY (id) ) WITH OIDS;

Основна проблема в тому, що я не великий фахівець з Postgre як напевно вже зрозуміло. Я лише здійснюю міграцію з Postgre на Oracle. Але з такою швидкістю виконання запитів є думки що мігрувати я буду до пенсії Зараз запущу VACUUM FULL ANALYZE "Clients_log"; Цікаво, що це дасть

Оригінально поводиться Postgre. VACUUM FULL ANALYZE "Clients_log"; - і доки він робиться - unable to Connect to Postgre ^)) Ефекту ніякого.

PostgreSQL 7.4.7 on i686-redhat-linux-gnu compiled by GCC gcc (GCC) 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)

Якщо це хоч якось допоможе