Concurrency (MySQL)
Naar navigatie springen
Naar zoeken springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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";