[ after @ 12.01.2011. 17:55 ] @
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. |