9404
Чат русскоязычного сообщества PostgreSQL, здесь мы обсуждаем технические вопросы, для поиска работы и предложения вакансий есть группа https://t.me/pgsqljobs For English discussion visit https://t.me/pg_sql
Всем привет. Есть вот такая табличка
db=# \d+ sometable
Table "public.sometable"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
---------+--------------------------+-----------+----------+-------------------------------------------------+----------+--------------+-------------
col1 | integer | | not null | | plain | |
col2 | timestamp with time zone | | not null | | plain | |
col3 | character varying(128) | | not null | | extended | |
col4 | character varying(32) | | not null | | extended | |
hstore_col | hstore | | | | extended | |
id | bigint | | not null | nextval('sometable_id_seq'::regclass) | plain | |
Indexes:
"sometable_pkey" PRIMARY KEY, btree (id)
"index_hstore" btree ((hstore_col -> 'email'::text)) WHERE col4::text = 'sometext'::text
Access method: heap
Options: autovacuum_vacuum_scale_factor=0.001
SELECT "sometable"."id", "sometable"."col1", "sometable"."col2", "sometable"."col3", "sometable"."col4", "sometable"."hstore_col" FROM "sometable" WHERE (("sometable"."hstore_col" -> 'email') = 'randomemail' AND "sometable"."col4" = 'sometext') ORDER BY "sometable"."id" DESC LIMIT 100;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=0.58..168260.31 rows=100 width=259)
-> Index Scan Backward using sometable_pkey on sometable (cost=0.58..336916555.35 rows=200236 width=259)
Filter: (((col4)::text = 'sometext'::text) AND ((hstore_col -> 'email'::text) = 'randomemail'::text))
Settings: effective_cache_size = '32GB', jit = 'off', max_parallel_workers_per_gather = '0', random_page_cost = '1.1', work_mem = '64MB'
alter table sometable alter COLUMN hstore_col set (n_distinct = -1);
А бывают аппаратные, которые на самом деле софтварные - это две потенциальные точки отказа!
Читать полностью…
Да, этот вариант тоже рассматривал
Дата-инженер отговаривает, склоняет к аппаратному RAID, но спасибо за информацию!
Там еще очереди RabbitMQ, которые тоже кушают iops
Читать полностью…
Рассматриваю решение RAID на NVMe, чтобы проблема ушла, но решение не тривиальное, изучаю, вроде нашел подходящий контроллер уже
Читать полностью…
Или даже двадцатое столетие после неудачной обрезки строки.
Читать полностью…
мб 20 ноября текущего года. или какого-то еще конкретного
Читать полностью…
Добрый день! Подскажите, пожалуйста, как в postgresql преобразовать строку ‘ноя.20’ в дату? Сама поковырялась, пока не выходит. Я нуб, простите
Читать полностью…
Только про нормальные формы
https://dmkpress.com/catalog/manga/978-5-97060-044-3/
вы его не исключите из квазироли PUBLIC, нет такого в постгресе функционала (ну или я не знаю его).
надо у квазироли PUBLIC отобрать право на создание таблиц в схеме public: REVOKE CREATE ON SCHEMA public FROM PUBLIC;, и тогда у всех пользователей в СУБД пропадёт возможность создавать таблицы в public (в том числе и у new_user, чего вы и добивались).
Я, кстати, непомню — как точно этот revoke делается. Чуть ли не через пустой grant (и проверять мне сейчас лень).
В общем, у меня когда-то несколько раз получалось, но всё, что я помню от тех времён — что я вздыхал как убога эта подсистема в постгресе.
всем привет подскажите пожалуйста
а современная версия постгреса не дает возможности в терминале выполнять последовательно команды (т е сначала написав begin потом end) в режиме реального времени?
(читаю книгу вот эту https://edu.postgrespro.ru/sql_primer.pdf ) раздел транзакции там надо имитировать в режиме реального времени блокировку
вылезает такая ошибка когда в первом терминале пытаюсь транзакцию руками провести
psql (16.2 (Debian 16.2-1.pgdg120+2))
Type "help" for help.
root=# BEGIN;
BEGIN
root=*# SELECT *
FROM aircrafts_tmp
WHERE range < 2000;
ERROR: relation "aircrafts_tmp" does not exist
LINE 2: FROM aircrafts_tmp
^
root=!# SELECT *
FROM aircrafts_data
WHERE range < 2000;
ERROR: current transaction is aborted, commands ignored until end of transaction block
это как-то обходится?
Аппаратный – дополнительная точка отказа (физическая). Но решать вам, конечно.
Читать полностью…
На всякий случай: существуют и софтварные RAID'ы, и они вполне успешно применяются в промышленной эксплуатации (в т.ч. в крупных инфраструктурах вроде mail/ru).
Читать полностью…
Много операций IOPS у софта, отсюда и такие проблемы. Софт уже оптимизировался
Читать полностью…
До нашей эры тоже годится, кстати. Бронзовый век, все дела.
Читать полностью…
Но ведь в этой строке нет дня месяца. Максимум, вы можете преобразовать это в дату вида 2020-11-01 (или выбрав любой другой подходящий константный день, либо последний день месяца).
Читать полностью…
а что, так до сих пор и нет даже манги про постгрес, не говоря уж про постгрес-тян?
Читать полностью…
А что вы пытались сделать таким стэйтментом?
(Да, public это псевдо-роль, она можэт быть указана не везде, где могут быть указаны обычные роли).
я вот тоже не нашёл. и мне тоже подспудно казалось, что вроде как можно, но это не точно. :/
Читать полностью…
Что-то не получается у public отнять create (
REVOKE create FROM public;Читать полностью…
ОШИБКА: роль "public" не существует
да, так не дает
test=# REVOKE public FROM new_user;
ОШИБКА: роль "public" не существует