2.请问这样频繁的读取操作会不会影响到MYSQL数据库的工作,因为还有其他应用程序要使用这个数据库,我需要执行完SELECT命令后执行 *Conn.CLOSE关闭数据库连接操作么?还是一直不关闭连接也没影响???请大家赐教!
17 个解决方案
#1
能不用轮询就不用轮询。
#2
1:这种设计非常不好,即便一定要这么做,那么timer的事件里先暂停timer,完成后再启用。避免上一次访问还没结束又开始新的访问。同时尽可能在业务许可的范围内,加大间隔时间。
2:要关掉connection
2:要关掉connection
#3
1.谢谢两位的指导,但是我需要尽快的知道目标数据库的表中有没有新增的条目,如果我不用这样不停查询的方式,该有什么方法呢?
2.我现在的TIMER是30秒查询数据库一次,在TIMER中用到的MySqlDataAdapter,DataSet等对象,应该要在timer过程结束后用dispose销毁吧,不然一段时间后不会造成内存溢出???
2.我现在的TIMER是30秒查询数据库一次,在TIMER中用到的MySqlDataAdapter,DataSet等对象,应该要在timer过程结束后用dispose销毁吧,不然一段时间后不会造成内存溢出???
#4
DataSet是托管资源,不需要手动释放
数据库连接close就行了,也不需要dispose
你只要保证每次连接完释放,不要把连接池给占满了,不会有大问题
#5
感谢大侠相助和解释!!!!!!那MySqlDataAdapter需要DISPOSE吗?
#6
1.肯定会影响
2.肯定要关闭连接。
2.肯定要关闭连接。
#7
影响是肯定会影响,但是会产生多大影响,要看你到底去查什么东西
如果你只查主键的最大值,来跟你目前保存的比较,看是否有新纪录,那么影响几乎是微乎其微的,而且你5S连接一次频率也并不算高
千万不要把里面数据都弄出来遍历
MySqlDataAdapter的问题
你可以这样用
using(MySqlDataAdapter=new...)
{
}
这样你就不要管它到底应该close还是disose,反正出了using块,它就会释放掉了
如果你只查主键的最大值,来跟你目前保存的比较,看是否有新纪录,那么影响几乎是微乎其微的,而且你5S连接一次频率也并不算高
千万不要把里面数据都弄出来遍历
MySqlDataAdapter的问题
你可以这样用
using(MySqlDataAdapter=new...)
{
}
这样你就不要管它到底应该close还是disose,反正出了using块,它就会释放掉了
#8
2.关键看可能的最大连接数。
如果只有几个或十几个程序在连数据库,那么不关闭连接也没影响。
如果客户端很多,不仅要用完关闭连接,还有相应调大访问间隔。
如果只有几个或十几个程序在连数据库,那么不关闭连接也没影响。
如果客户端很多,不仅要用完关闭连接,还有相应调大访问间隔。
#9
大家的解释都很有用,谢谢。
#10
请赐教!!!
#11
如果只有新增,没有修改
那么你直接去查目标数据库里主键的最大值,拿这个最大值再去源数据库里查,不就直接得到所有新增的记录了,先取出来再对比是要闹哪样?
好比你要跟海贼王的漫画,你先记住上次看到哪了,再上网上看看最新的是不是你看过的,不就得了
难道还先看最近的10期,再回忆你看过没看过?
那么你直接去查目标数据库里主键的最大值,拿这个最大值再去源数据库里查,不就直接得到所有新增的记录了,先取出来再对比是要闹哪样?
好比你要跟海贼王的漫画,你先记住上次看到哪了,再上网上看看最新的是不是你看过的,不就得了
难道还先看最近的10期,再回忆你看过没看过?
#12
而如果你要获取所有修改的,那就麻烦了
除非你加个字段,修改的时候顺便修改这个字段
然后你取所有这个字段是"修改过"的数据,取出来之后顺便把它更新回"未修改"
除非你加个字段,修改的时候顺便修改这个字段
然后你取所有这个字段是"修改过"的数据,取出来之后顺便把它更新回"未修改"
#13
而如果你要获取所有修改的,那就麻烦了
除非你加个字段,修改的时候顺便修改这个字段
然后你取所有这个字段是"修改过"的数据,取出来之后顺便把它更新回"未修改"
当然这个过程可以用触发器+存储过程来做,而不需要去改写入数据库的软件
#14
有修改可以用TimeStamp字段。
前一次记下最新的TimeStamp值,下次只取大于这个值的记录。
前一次记下最新的TimeStamp值,下次只取大于这个值的记录。
#15
如果只有新增,没有修改
那么你直接去查目标数据库里主键的最大值,拿这个最大值再去源数据库里查,不就直接得到所有新增的记录了,先取出来再对比是要闹哪样?
好比你要跟海贼王的漫画,你先记住上次看到哪了,再上网上看看最新的是不是你看过的,不就得了
难道还先看最近的10期,再回忆你看过没看过?
哈哈,大师的比喻精确而不失幽默啊!!!赞一个!!!!!!
1.什么是主键最大值?不是主键的值吧?怎么比较?
2. 我的主键值类型是VARCHAR(40),是个字符串,结构是XX yyyy mm dd hh mm ss (XX是两位特定字符代码,其他的是年年月月日日时时分分秒秒)
3.倒有另一个字段Save_time,是记录的保存时间,类型是TimeStamp,结构是 yyyy mm dd hh mm ss,我可以用这个值比较最新记录撒?我比较的时候肯定是全表检索撒?我全表共3万条记录,不知道效率怎么样?因为这个数据库其他应用也在用,不敢轻易动,索引这些我也不会建,哈哈。
#16
有修改可以用TimeStamp字段。
前一次记下最新的TimeStamp值,下次只取大于这个值的记录。
我有一个字段是 timestamp(14)类型的时间戳字段save_time,值
想用条件:now()-save_time <1小时, 取得最近1小时内新增的条目,但好像不行,是不是now()和save_time类型不同,不能相减?错误结果如下图,timediff 就是相减的结果
#17
时间戳应该和unix_timestamp()而不是now()比较吧。
#1
能不用轮询就不用轮询。
#2
1:这种设计非常不好,即便一定要这么做,那么timer的事件里先暂停timer,完成后再启用。避免上一次访问还没结束又开始新的访问。同时尽可能在业务许可的范围内,加大间隔时间。
2:要关掉connection
2:要关掉connection
#3
1.谢谢两位的指导,但是我需要尽快的知道目标数据库的表中有没有新增的条目,如果我不用这样不停查询的方式,该有什么方法呢?
2.我现在的TIMER是30秒查询数据库一次,在TIMER中用到的MySqlDataAdapter,DataSet等对象,应该要在timer过程结束后用dispose销毁吧,不然一段时间后不会造成内存溢出???
2.我现在的TIMER是30秒查询数据库一次,在TIMER中用到的MySqlDataAdapter,DataSet等对象,应该要在timer过程结束后用dispose销毁吧,不然一段时间后不会造成内存溢出???
#4
1.谢谢两位的指导,但是我需要尽快的知道目标数据库的表中有没有新增的条目,如果我不用这样不停查询的方式,该有什么方法呢?
2.我现在的TIMER是30秒查询数据库一次,在TIMER中用到的MySqlDataAdapter,DataSet等对象,应该要在timer过程结束后用dispose销毁吧,不然一段时间后不会造成内存溢出???
DataSet是托管资源,不需要手动释放
数据库连接close就行了,也不需要dispose
你只要保证每次连接完释放,不要把连接池给占满了,不会有大问题
#5
1.谢谢两位的指导,但是我需要尽快的知道目标数据库的表中有没有新增的条目,如果我不用这样不停查询的方式,该有什么方法呢?
2.我现在的TIMER是30秒查询数据库一次,在TIMER中用到的MySqlDataAdapter,DataSet等对象,应该要在timer过程结束后用dispose销毁吧,不然一段时间后不会造成内存溢出???
DataSet是托管资源,不需要手动释放
数据库连接close就行了,也不需要dispose
你只要保证每次连接完释放,不要把连接池给占满了,不会有大问题
感谢大侠相助和解释!!!!!!那MySqlDataAdapter需要DISPOSE吗?
#6
1.肯定会影响
2.肯定要关闭连接。
2.肯定要关闭连接。
#7
影响是肯定会影响,但是会产生多大影响,要看你到底去查什么东西
如果你只查主键的最大值,来跟你目前保存的比较,看是否有新纪录,那么影响几乎是微乎其微的,而且你5S连接一次频率也并不算高
千万不要把里面数据都弄出来遍历
MySqlDataAdapter的问题
你可以这样用
using(MySqlDataAdapter=new...)
{
}
这样你就不要管它到底应该close还是disose,反正出了using块,它就会释放掉了
如果你只查主键的最大值,来跟你目前保存的比较,看是否有新纪录,那么影响几乎是微乎其微的,而且你5S连接一次频率也并不算高
千万不要把里面数据都弄出来遍历
MySqlDataAdapter的问题
你可以这样用
using(MySqlDataAdapter=new...)
{
}
这样你就不要管它到底应该close还是disose,反正出了using块,它就会释放掉了
#8
2.关键看可能的最大连接数。
如果只有几个或十几个程序在连数据库,那么不关闭连接也没影响。
如果客户端很多,不仅要用完关闭连接,还有相应调大访问间隔。
如果只有几个或十几个程序在连数据库,那么不关闭连接也没影响。
如果客户端很多,不仅要用完关闭连接,还有相应调大访问间隔。
#9
大家的解释都很有用,谢谢。
#10
请赐教!!!
#11
如果只有新增,没有修改
那么你直接去查目标数据库里主键的最大值,拿这个最大值再去源数据库里查,不就直接得到所有新增的记录了,先取出来再对比是要闹哪样?
好比你要跟海贼王的漫画,你先记住上次看到哪了,再上网上看看最新的是不是你看过的,不就得了
难道还先看最近的10期,再回忆你看过没看过?
那么你直接去查目标数据库里主键的最大值,拿这个最大值再去源数据库里查,不就直接得到所有新增的记录了,先取出来再对比是要闹哪样?
好比你要跟海贼王的漫画,你先记住上次看到哪了,再上网上看看最新的是不是你看过的,不就得了
难道还先看最近的10期,再回忆你看过没看过?
#12
而如果你要获取所有修改的,那就麻烦了
除非你加个字段,修改的时候顺便修改这个字段
然后你取所有这个字段是"修改过"的数据,取出来之后顺便把它更新回"未修改"
除非你加个字段,修改的时候顺便修改这个字段
然后你取所有这个字段是"修改过"的数据,取出来之后顺便把它更新回"未修改"
#13
而如果你要获取所有修改的,那就麻烦了
除非你加个字段,修改的时候顺便修改这个字段
然后你取所有这个字段是"修改过"的数据,取出来之后顺便把它更新回"未修改"
当然这个过程可以用触发器+存储过程来做,而不需要去改写入数据库的软件
#14
有修改可以用TimeStamp字段。
前一次记下最新的TimeStamp值,下次只取大于这个值的记录。
前一次记下最新的TimeStamp值,下次只取大于这个值的记录。
#15
如果只有新增,没有修改
那么你直接去查目标数据库里主键的最大值,拿这个最大值再去源数据库里查,不就直接得到所有新增的记录了,先取出来再对比是要闹哪样?
好比你要跟海贼王的漫画,你先记住上次看到哪了,再上网上看看最新的是不是你看过的,不就得了
难道还先看最近的10期,再回忆你看过没看过?
哈哈,大师的比喻精确而不失幽默啊!!!赞一个!!!!!!
1.什么是主键最大值?不是主键的值吧?怎么比较?
2. 我的主键值类型是VARCHAR(40),是个字符串,结构是XX yyyy mm dd hh mm ss (XX是两位特定字符代码,其他的是年年月月日日时时分分秒秒)
3.倒有另一个字段Save_time,是记录的保存时间,类型是TimeStamp,结构是 yyyy mm dd hh mm ss,我可以用这个值比较最新记录撒?我比较的时候肯定是全表检索撒?我全表共3万条记录,不知道效率怎么样?因为这个数据库其他应用也在用,不敢轻易动,索引这些我也不会建,哈哈。
#16
有修改可以用TimeStamp字段。
前一次记下最新的TimeStamp值,下次只取大于这个值的记录。
我有一个字段是 timestamp(14)类型的时间戳字段save_time,值
想用条件:now()-save_time <1小时, 取得最近1小时内新增的条目,但好像不行,是不是now()和save_time类型不同,不能相减?错误结果如下图,timediff 就是相减的结果
#17
时间戳应该和unix_timestamp()而不是now()比较吧。