也就是,如果我用程序更新了数据,数据会存放在缓存中。
数据的增删改查都是针对缓存的数据进行的,并不会立即更新到物理表中
这样做是为了提高数据库IO性能
真正的提交要满足一定条件才会进行,例如缓存池已经写满
你想手动提交缓存,可直接调用checkpoint清除缓存进行物理提交。
chechpoint的机制,sqlserver\oracle\sybase都采用了
但好像会有一个这样的问题,就是如果你使用了数据库后台工具对数据进行更新,似乎这样会不经过缓存而直接更新数据库,导致物理表中的数据与缓存不一样
这时候如果你不手动调用checkpoint,将缓存写入数据库,你用程序对数据库的增删查改就会有偏差
不知道大家用数据库时遇到这种问题没有,反正我是遇到过,是在使用sybase时。
而且缓存设置越大,如果你提交的数据比较大,如图片时没问题,但如果你更新的数据都是小笔的字符型数据时,这样要很久才会写满缓存,最后将缓存写入物理表。
这个时候如果你用后台直接更新的物理表,缓存就与物理表存在较大差别,这个问题就很突出了
而数据的不一致将是灾难性的。