我正在研究一个多线程.NET 4应用程序,该应用程序不断获取数据并将它们写入SQL数据库(MySQL或SQL Server - 尚不确定)。
每次执行INSERT
时,必须先在SELECT
之前按顺序执行,以便与数据库同步。这意味着应用程序获取一个包含新旧数据的块,然后必须检查哪些数据集是新的,哪些数据集已经存在于数据库中。
这意味着很多SELECTS
每次都会产生或多或少相同的数据。
在应用程序中为每个表创建最后x个条目的副本是否是个好主意? 这样,可以在副本而不是数据库上完成同步。
亲:
魂斗罗:
答案 0 :(得分:1)
除非您有外部程序同时写入数据库,否则可以使用缓冲。
但是,不是缓冲SELECT结果,只需在插入方法中添加最后一个X(合理数量)插入请求的缓冲区,并且只插入新的插入请求,如果它不在该列表中。
您可能还想锁定插入方法,以确保包含检查始终正确。
答案 1 :(得分:1)
如果有多个进程写入数据库,保持内存数据和数据库之间的完美同步是非常重要的。实际上,确认同步的唯一方法是在数据库上进行SELECT查询。因此,您需要在完美同步和同步之间进行权衡,并采用一些非常有效的容差。
我的建议在两种情况下都有帮助: