BG Development


  Reply to this topicStart new topicStart Poll

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



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

Мнения: 4014
Регистриран на: 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
PMEmail PosterUsers Website
Top
DarkOne
Публикувано на: 13-08-2019, 10:30
Quote Post


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

Мнения: 3733
Регистриран на: 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



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

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



ами не съм още


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

Тъпото е че INSERT-a става много по-сложен с две таблици. Сега правя
CODE
INSERT INTO ... ON CONFLICT ON ... DO UPDATE
,
докато с две таблици нещата ще станат по-сложни
PMEmail PosterUsers Website
Top
thrawn
Публикувано на: 13-08-2019, 11:59
Quote Post



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

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



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

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



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

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



QUOTE (thrawn @ 13-08-2019, 11:59)
Не се сещам за причина това да е необходимо.
PMEmail PosterUsers Website
Top
thrawn
Публикувано на: 13-08-2019, 12:13
Quote Post



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

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



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



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

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



Всъщност, изобщо нямаш първични ключове а само уникални (за партишъна).
PMEmail Poster
Top
thrawn
Публикувано на: 13-10-2019, 09:01
Quote Post



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

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



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

Topic Options Reply to this topicStart new topicStart Poll

 


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