Size: a a a

pgsql – PostgreSQL

2021 June 19

AS

Alexey Stavrov in pgsql – PostgreSQL
А как админы решают задачу, когда место не хватает и нужно добавить место без простоя?

Предположение, что используется всегда LVM, а при нехватке докидываются диски и подцепляются, верное?

Смотрю и вижу, что у LVM тоже есть всякие writethrough/writeback...
источник

𝕾

𝕾𝖔𝖚𝕷𝕭𝖆𝕯𝕲𝖚𝖄... in pgsql – PostgreSQL
Привет, ребят. Помогите, возник такой вопрос.
Есть таблица Stats:
User_id | Wins | Loses | Winrate
Есть таблица Matches:
Match_id | User_id | match_type | result

Хочу в один запрос сделать insert в таблицу Stats, чтобы заполнить её статистикой юзеров, путём расчета win,lose через count() , а winrate, как их отношения. Скажите такой запрос можно написать? Без всяких циклов итд, просто через джоины, например.
Если да, поскажите как?
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
Что-то вроде такого:

insert into stats 

select
   *,
   win_count / (win_count +  loose_count) as winrate
from (
   select
       user_id,
       count(*) filter(where result = 'lose') as loose_count,
       count(*) filter(where result = 'win') as win_count,      
   from matches
   group by user_id
)
источник

A

Alex in pgsql – PostgreSQL
Есть таблицы с полигонами table1, table, table3
И есть таблица с linestring.

Как сделать запрос который вернёт название таблицы и названия полигона в таблице которые пересекаются с linestring?
источник

A

Alex in pgsql – PostgreSQL
SELECT p.* FROM table1 AS p, line_table as l WHERE st_intersects(p.geom, l.geom)
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
Есть расширение PostGIS. Я бы там искал ответ.

Я не использовал ниразу его, поэтому могу только подсказать посмотреть на st_crosses или st_intersects
источник

A

Alex in pgsql – PostgreSQL
Это мне даёт возможность с одной таблицей сделать запрос
источник

A

Alex in pgsql – PostgreSQL
А как с несколькими
источник

П

Павел П. in pgsql – PostgreSQL
Union (all)
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
Да, используйте 3 запроса или CTE

with x as (
 select ...
), y as (
 select ...
)
select from x
union
select from y
источник

A

Alex in pgsql – PostgreSQL
Можете полный запрос написать?
источник

П

Павел П. in pgsql – PostgreSQL
Да вот выше вариант
источник

𝕾

𝕾𝖔𝖚𝕷𝕭𝖆𝕯𝕲𝖚𝖄... in pgsql – PostgreSQL
Спасибо! А group_by здесь на что повлияет?) Не шарю просто
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
Вам лучше бы прочитать немного основы SQL. Узнать основы совсем не сложно и не долго.

Это группировка, позволяющая посчитать сумму по user_id.
источник

𝕾

𝕾𝖔𝖚𝕷𝕭𝖆𝕯𝕲𝖚𝖄... in pgsql – PostgreSQL
Спасибо!
источник

IA

Ilya Anfimov in pgsql – PostgreSQL
Во-первых, если и правда нужно "без простоя" -- то мы заранее делаем репликацыю всякую. После чего можно остановить реплику, докинуть туда места, догнать её до основной копии и переключиться на неё.

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

И да, у любого диска есть write through хотя бы, но lvm в этих разборках примерно ничего не добавляет.
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
Ага, спасибо.

> у любого диска есть write through хотя бы, но lvm в этих разборках примерно ничего не добавляет.

Имелось ввиду, что у lvm, как я понял, это вообще настраивается. Можно настроить неправильно, поставив writeback.
источник

IA

Ilya Anfimov in pgsql – PostgreSQL
Это по-моему у любого block device в линукс можно.
Не очень интересовался, по умолчанию оно отключено -- а случаев когда мне это было бы надо я не припомню.
источник

IA

Ilya Anfimov in pgsql – PostgreSQL
Точнее сказать, до некоторой степени -- оно примерно всегда такое (кроме случаев вроде ext3fs, data=ordered или как-то так) -- а чтобы sync/fsync сломать -- мне пока такого не требовалось.
источник

IA

Ilya Anfimov in pgsql – PostgreSQL
Кроме случаев data=journal, извините.
источник