linustd 发表于 2014-07-01 07:42

有什么办法获得SQL语句引用的所有数据库对象?

本帖最后由 linustd 于 2014-07-01 07:43 编辑

我想搞一个在数据库和应用程序之间的缓存中间件。

每次应用程序传过一个(或者几个)SQL语句过来,中间件就取得这个SQL所用到的所有对象(表、存储过程、视图)等,如果发现引用的所有对象都没有修改过,就直接返回缓存中的结果。

这里有一个难题,如何取得SQL语句设计到的对象,以及如何判断一个对象(表,存储过程,视图等)是否已经修改过。

理论上来说,这两个需求对数据库来说,是一个简单的任务,但是有可能绝大数数据库没有提供这个功能,因为以前没人有这个需求。

seesea2517 发表于 2014-07-01 09:23

如何取得SQL语句设计到的对象
这个对于写代码来说应该就只是一个字符串处理的问题了吧。

其它的高级功能没接触过,楼主加油啊。

digdeep126 发表于 2014-07-01 10:48

回复 1# linustd


    你这个功能不就是 query cache 吗?

linustd 发表于 2014-07-02 05:43

digdeep126 发表于 2014-07-01 10:48 static/image/common/back.gif
回复 1# linustd




就是类似query cache, 但是一般数据库自己的query cache都是内置在数据库里面,应该把这个功能提取出来,数据库只负责数据安全功能。
另外数据库应该还提供一个重要的对象改变通知能共。

tiankafeiwu 发表于 2014-07-02 14:24

有啊,memcache,redis都能实现

action08 发表于 2014-07-12 09:46

如果有写请求,同是主动删除缓存

bobo2 发表于 2014-07-15 14:01

mysql有执行计划表么?对象都在那里面

linustd 发表于 2014-07-16 22:29

回复 7# bobo2


怎么查询出来?

   

asdf2110 发表于 2015-08-05 10:39

做到外面,想看看有没有修改过,必然要和数据库再通信一次,每条都这样,代价是不是高了点?

renxiao2003 发表于 2015-08-11 15:27

dump时不是能导出所有的语句吗?
页: [1]
查看完整版本: 有什么办法获得SQL语句引用的所有数据库对象?