Concurrency (MySQL): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
(Nieuwe pagina aangemaakt met 'Met ''concurrency'' bedoel ik hier: Hoe weet ik welke versie van een entiteit (bv. een tabel) de juiste is? == Voorbeeld == * Opgeleverde tabellen staan in databa...')
 
 
(3 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 7: Regel 7:
 
* In ''eansku'' heb ik een tabel ''sku_b2'' gecreëerd. Na een tijdje is deze tabel gepushed naar ''dwh_org''
 
* In ''eansku'' heb ik een tabel ''sku_b2'' gecreëerd. Na een tijdje is deze tabel gepushed naar ''dwh_org''
 
* Nu, een maandje later wil ik verder werken met tabel ''sku_b2''. Ik weet alleen niet zeker of ik tussentijd in ''eansku'' wijzigingen heb aangebracht. Of dat ''sku_b2'' via een andere projectdatabase is veranderd op ''dwh_org''. Hoe kan ik dat achterhalen?
 
* Nu, een maandje later wil ik verder werken met tabel ''sku_b2''. Ik weet alleen niet zeker of ik tussentijd in ''eansku'' wijzigingen heb aangebracht. Of dat ''sku_b2'' via een andere projectdatabase is veranderd op ''dwh_org''. Hoe kan ik dat achterhalen?
 +
 +
== information_schema ==
 +
 +
Systeemdatabase <code>information_schema</code> beschikt over enige relevante informatie:
 +
 +
=== update_time ===
 +
 +
Dit werkt, maar alleen als records daadwerkelijk zijn ''aangepast''. Niet als een complete tabel is aangemaakt (bv. door ''push''):
 +
 +
<pre>
 +
select
 +
  update_time  # Steeds leeg?
 +
from
 +
  information_schema.tables
 +
where
 +
  table_schema="eansku"
 +
and
 +
  table_name="sku_b2";
 +
</pre>
 +
 +
=== create_time ===
 +
 +
Dit werkt beter:
 +
 +
<pre>
 +
select
 +
  create_time
 +
from
 +
  information_schema.tables
 +
where
 +
  table_schema="eansku"
 +
and
 +
  table_name="sku_b2";
 +
</pre>
 +
 +
== Tabel die gepushed is ==
 +
 +
Dit werkt: De gepushte tabel heeft als ''create_time'' de tijd van pushen.
 +
 +
<pre>
 +
use eansku;
 +
call push_table("sku_b2", "sku_b2");  # Push this table to dwh_org
 +
 +
select
 +
  create_time
 +
from
 +
  information_schema.tables
 +
where
 +
  table_schema="dwh_org"
 +
  and
 +
  table_name="sku_b2";
 +
</pre>
 +
 +
== Tabel die aangepast is ==
 +
 +
In bovenstaande tabel heb ik een record aangepast. En dat is te detecteren:
 +
 +
<pre>
 +
select
 +
  create_time,
 +
  update_time
 +
from
 +
  information_schema.tables
 +
where
 +
  table_schema="dwh_org"
 +
  and
 +
  table_name="sku_b2";
 +
</pre>

Huidige versie van 22 jan 2021 om 12:07

Met concurrency bedoel ik hier: Hoe weet ik welke versie van een entiteit (bv. een tabel) de juiste is?

Voorbeeld

  • Opgeleverde tabellen staan in database dwh_org
  • Voor een project heb ik een bijbehorende projectdatabase, genaamd eansku
  • In eansku heb ik een tabel sku_b2 gecreëerd. Na een tijdje is deze tabel gepushed naar dwh_org
  • Nu, een maandje later wil ik verder werken met tabel sku_b2. Ik weet alleen niet zeker of ik tussentijd in eansku wijzigingen heb aangebracht. Of dat sku_b2 via een andere projectdatabase is veranderd op dwh_org. Hoe kan ik dat achterhalen?

information_schema

Systeemdatabase information_schema beschikt over enige relevante informatie:

update_time

Dit werkt, maar alleen als records daadwerkelijk zijn aangepast. Niet als een complete tabel is aangemaakt (bv. door push):

select
   update_time   # Steeds leeg?
from
   information_schema.tables
where
   table_schema="eansku"
and
   table_name="sku_b2";

create_time

Dit werkt beter:

select
   create_time
from
   information_schema.tables
where
   table_schema="eansku"
and
   table_name="sku_b2";

Tabel die gepushed is

Dit werkt: De gepushte tabel heeft als create_time de tijd van pushen.

use eansku;
call push_table("sku_b2", "sku_b2");   # Push this table to dwh_org

select
   create_time
from
   information_schema.tables
where
   table_schema="dwh_org"
   and
   table_name="sku_b2";

Tabel die aangepast is

In bovenstaande tabel heb ik een record aangepast. En dat is te detecteren:

select
   create_time,
   update_time
from
   information_schema.tables
where
   table_schema="dwh_org"
   and
   table_name="sku_b2";