Pozdrav svima.
Imam već neko vreme dilemu da li postoji način da se ispravno prikaže vreme pristupa/modifikacije nekoj bazi tj. tabeli.
Iz samog mysql-a
show table status like 'neka_tbl'
daje update time ali samo za MyISAM tip tabela, dok za Innodb i memory tip tabela update_time je NULL.
kao i isto to preko querija:
select update_time from information_schema.tables where table_name='neka_tbl'
Sada, negde sam procitao da kod nekih verzija mysql (bug?) output create_time iz gornjih upita predstavlja ustvari update_time tj. modifikaciju kod innodb tabela.
Drugi na prvi pogled mnogo bolji nacin bi bio preko svojstva samog fajla/direktorijuma u unix/linux sistemu. Kod linux-a imamo tri vremena koje definisu fajl/folder
atime ----kada je fajlu zadnji put pristupano - access time
mtime ----kada je fajl modifikovan
ctime ----menja se iz istih razloga kao i mtime plus kada se promeni owner ili permisije
i onda bi dobili razne tipove vremena:
ls -lu ----za atime
ls -la ----za mtime
ls -lc ----za ctime
ili jednostavno preko stat komande koja daje sve to zajedno ili preko find komande.
To bi trebalo da prikaže ispravno vreme kada je tabela modifikovana mtime/ctime. Medjutim ako imamo bazu za koju se radi backup svaki dan, a kojoj niko ne pristupa mesecima vreme zadnjeg pristupa - neki select necemo dobiti, vec kao zadnji pristup ce biti zabelezeno vreme zadnjeg backupa. Takodje, promene se ne upisuju odmah na hdd vec su neko vreme u buferu pa tek onda idu na hdd.
Treći način bi bio izvlacenje informacija iz mysql logova general i slow query log, ili cak i iz bin loga ako je aktiviran.
Kao solucija moze biti i ubacivanje i timestamp kolone u svaku pojedinačnu tabelu, ali mi se to čini kao rudarski posao.
Zanima me kakva su vaša mišljenja i iskustva po ovom pitanju.
Imam već neko vreme dilemu da li postoji način da se ispravno prikaže vreme pristupa/modifikacije nekoj bazi tj. tabeli.
Iz samog mysql-a
show table status like 'neka_tbl'
daje update time ali samo za MyISAM tip tabela, dok za Innodb i memory tip tabela update_time je NULL.
kao i isto to preko querija:
select update_time from information_schema.tables where table_name='neka_tbl'
Sada, negde sam procitao da kod nekih verzija mysql (bug?) output create_time iz gornjih upita predstavlja ustvari update_time tj. modifikaciju kod innodb tabela.
Drugi na prvi pogled mnogo bolji nacin bi bio preko svojstva samog fajla/direktorijuma u unix/linux sistemu. Kod linux-a imamo tri vremena koje definisu fajl/folder
atime ----kada je fajlu zadnji put pristupano - access time
mtime ----kada je fajl modifikovan
ctime ----menja se iz istih razloga kao i mtime plus kada se promeni owner ili permisije
i onda bi dobili razne tipove vremena:
ls -lu ----za atime
ls -la ----za mtime
ls -lc ----za ctime
ili jednostavno preko stat komande koja daje sve to zajedno ili preko find komande.
To bi trebalo da prikaže ispravno vreme kada je tabela modifikovana mtime/ctime. Medjutim ako imamo bazu za koju se radi backup svaki dan, a kojoj niko ne pristupa mesecima vreme zadnjeg pristupa - neki select necemo dobiti, vec kao zadnji pristup ce biti zabelezeno vreme zadnjeg backupa. Takodje, promene se ne upisuju odmah na hdd vec su neko vreme u buferu pa tek onda idu na hdd.
Treći način bi bio izvlacenje informacija iz mysql logova general i slow query log, ili cak i iz bin loga ako je aktiviran.
Kao solucija moze biti i ubacivanje i timestamp kolone u svaku pojedinačnu tabelu, ali mi se to čini kao rudarski posao.
Zanima me kakva su vaša mišljenja i iskustva po ovom pitanju.