在android中经常会用到改变数据库内容后再去使用数据库更新的内容,很多人会重新去query一遍,但是这样的问题就是程序会特别占内存,而且有可能会搂关cursor而导致程序内存未释放等等。其实android内部提供了一种ContentObserver的东西来监听数据库内容的变化。
ContentObserver的构造函数需要一个参数Hanlder,因为ContentObserver内部使用了一个实现Runnable接口的内部类NotificationRunnable,来实现数据库内容的变化。需要使用hanlder去post消息。注册ContentObserver的方法是:getContentResolver()registerContentObserver(uri, notifyForDescendents, observer)
上面3个参数为:uri----Uri类型,是需要监听的数据库的uri
notifyForDescendents---boolean true的话就会监听所有与此uri相关的uri。false的话则是直接特殊的uri才会监听。一般都设置为true
observer-----ContentObserver 就是需要的contentobserver
初始化一个ContentObserver对象,重载onChange(boolean ),在这个方法里去 *** 作数据库的使用,针对变化后的使用。
Online DDL 工具:pt-osc
对于 MySQL Online DDL 目前主流的有三种工具:
原生 Online DDL;
pt-osc(online-schema-change),
gh-ost
本文主要讲解 pt-online-schema-change 的使用以及三种工具的简单对比。
一、原理及限制
11 原理
1 创建一个与原表结构相同的空表,表名是 _new 后缀;
2 修改步骤 1 创建的空表的表结构;
3 在原表上加三个触发器:delete/update/insert,用于 copy 数据过程中,将原表中要执行的语句在新表中执行;
4 将原表数据以数据块(chunk)的形式 copy 到新表;
5 rename 原表为 old 表,并把新表 rename 为原表名,然后删除旧表;
6 删除触发器。
写一个存储过程,对表中的所有可否退回字段的值进行判断,如果为1,则对该项中审核时间和当前时间进行判断,如果相差15天就将可否退回改为0
这个存储过程用代理中的作业每天定时进行 *** 作
这里有如果设置定时作业的方法
>
第一种,刚刚下载玩SQL SERVER 2008,还没有进行任何 *** 作(任何 *** 作的意思就是根本没打开过安装文件);
第二种,已经尝试过安装,并且按照向导进行了支持文件的安装。第一种,这种情况我没试,因为我自己不符合这种情况……不过看样子很简单,按键盘WIN+Rd出运行对话框,输入CMD运行,打开命令行对话框,进入到SQL SERVER 2008的安装根目录的路径,然后输入setupexe /INSTALLSHAREDDIR="D:\\Program Files\\Microsoft SQL Server\\" /INSTALLSHAREDWOWDIR="D:\\Program Files (x86)\\Microsoft SQL Server\\"
以上就是关于怎样监听到数据库的数据变化全部的内容,包括:怎样监听到数据库的数据变化、mysql 如何监控表结构修改、怎样实时监控sqlserver数据库内记录的变化等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)