我面临一个任务,需要在.NET框架中设计一个Web应用程序。在这个应用程序中,用户通常只有只读访问权限,因为他们只会查看数据(SELECT),占99%的时间。
然而,后端数据库将成为管理记录插入/删除/更新的巨头。预计每年系统中至少会添加约1000万条记录,分布在不到5个表中。
问题/请求1:由于这些更新/插入将非常频繁(最新的每一两分钟),我希望获得一些提示,以便当一些行正在更改时,查询操作不会导致线程死锁或反之亦然。
问题/请求2:我大概估算,在正常情况下,每分钟会插入几百条记录,24/7地进行更新/删除(基于某些条件)。如果我编写一个C#工具,从任意数量的源(XML、CSV或直接从远程数据库的某些表中)获取数据,然后进行插入/更新/删除,那么这是否足够快,或者是否会导致死锁问题?
我希望我的问题已经详细说明了...如果有什么不清楚的,请告诉我...
提前感谢您。
然而,后端数据库将成为管理记录插入/删除/更新的巨头。预计每年系统中至少会添加约1000万条记录,分布在不到5个表中。
问题/请求1:由于这些更新/插入将非常频繁(最新的每一两分钟),我希望获得一些提示,以便当一些行正在更改时,查询操作不会导致线程死锁或反之亦然。
问题/请求2:我大概估算,在正常情况下,每分钟会插入几百条记录,24/7地进行更新/删除(基于某些条件)。如果我编写一个C#工具,从任意数量的源(XML、CSV或直接从远程数据库的某些表中)获取数据,然后进行插入/更新/删除,那么这是否足够快,或者是否会导致死锁问题?
我希望我的问题已经详细说明了...如果有什么不清楚的,请告诉我...
提前感谢您。
READ_COMMITTED_SNAPSHOT
,在该模式下,读者不会阻塞写者,写者也不会阻塞读者。该模式会消耗更多的临时空间,但我认为完全值得,并避免使用nolock
提示等技巧。除此之外,您需要自行测试和基准测试。 - sstan