BG Development


  Reply to this topicStart new topicStart Poll

> 1 или две таблици
Gamma Goblin
Публикувано на: 13-08-2019, 09:39
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2690
Регистриран на: 21.02.18



Не питам в SO, защото по тамошните критерии е офтопик


1. Първи вариант

CODE
create table demo(
    id serial primary key
    name varchar not null,
    last_seen timestamptz not null
);


2. Втори вариант
CODE

create table demo(
    id serial primary key
    name varchar not null,
);

create table last_seen(
    id serial primary key,
    demo_id not null unique references demo(id),
    last_seen timestamptz not null
);


Цялата работа е че искам да рънна

QUOTE
cluster demo using some_index;
, което физически сортира демо таблицата в index-order. Идеята е че се правят заявки по даден ключ и ако се намират в една страница ще се прави по малко random reads и по-малко ИО операции.

Обаче за да работи това нещо, last_seen трябва да е в отделна таблица защото ъпдейтите разбъркват таблицата, а last_seen е ъпдейтва много често и прави клъстеризирането на демо таблицата безсмислено.


Та според вас заслужава ли си сложнотията ?

Това мнение е било редактирано от Gamma Goblin на 13-08-2019, 09:41


--------------------
https://www.rust-lang.org/
---
Хора, които са прекалено умни, за да се занимават с политика, са наказани да бъдат управлявани от глупаци.
---
Life is hard; it's harder when you're stupid.
---
Black metal is like coffee. You have to learn to drink it but when you get used to it, you just want it darker and darker
PMEmail PosterUsers Website
Top
DarkOne
Публикувано на: 13-08-2019, 10:30
Quote Post


Group Icon
Име: Александър Петков
Група: Администратор
Ранг: Почетен член

Мнения: 3415
Регистриран на: 30.01.04



Пробвал ли си да измериш двата варианта да видиш дали има ускорение и дали си заслужава? Ще правиш ли JOIN към last_seen като извличаш данните?


--------------------
The man who learns only what others know
is as ignorant as if he learns nothing.
The treasures of knowledge are the most rare,
and guarded most harshly.
-- Chronicle of the First Age
PMICQ
Top
Gamma Goblin
Публикувано на: 13-08-2019, 11:58
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2690
Регистриран на: 21.02.18



ами не съм още


Принципно в демо таблицата само ще се пише, и last_seen е необходим само когато ще се трие (много рядко), така че джойна е без значение дали ще е бавен.

Тъпото е че INSERT-a става много по-сложен с две таблици. Сега правя
CODE
INSERT INTO ... ON CONFLICT ON ... DO UPDATE
,
докато с две таблици нещата ще станат по-сложни


--------------------
https://www.rust-lang.org/
---
Хора, които са прекалено умни, за да се занимават с политика, са наказани да бъдат управлявани от глупаци.
---
Life is hard; it's harder when you're stupid.
---
Black metal is like coffee. You have to learn to drink it but when you get used to it, you just want it darker and darker
PMEmail PosterUsers Website
Top
thrawn
Публикувано на: 13-08-2019, 11:59
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2449
Регистриран на: 17.01.17



Ако операцията за търсене наистина е по-ефикасна си струва. Това, че правиш релация 1:1 не е някакво изключение а честа практика. Не виждам какво те притеснява това.

Мен по ме притеснява идеята за физическо сортиране на данни в таблиците. Не се сещам за причина това да е необходимо.
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 13-08-2019, 12:04
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2690
Регистриран на: 21.02.18



QUOTE (thrawn @ 13-08-2019, 11:59)
Не се сещам за причина това да е необходимо.


--------------------
https://www.rust-lang.org/
---
Хора, които са прекалено умни, за да се занимават с политика, са наказани да бъдат управлявани от глупаци.
---
Life is hard; it's harder when you're stupid.
---
Black metal is like coffee. You have to learn to drink it but when you get used to it, you just want it darker and darker
PMEmail PosterUsers Website
Top
thrawn
Публикувано на: 13-08-2019, 12:13
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2449
Регистриран на: 17.01.17



За партишън таблици не се ползва физическо сортиране. Просто данните си отиват в различните партишъни. Тук обаче има една мотика - нямаш първични ключове за цялата таблица (само за отделните партишъни). Затова аз ползвам партишъни само за хистори данни.
PMEmail Poster
Top
thrawn
Публикувано на: 13-08-2019, 12:45
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2449
Регистриран на: 17.01.17



Всъщност, изобщо нямаш първични ключове а само уникални (за партишъна).
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0