对所有查询进行优化,并构造数据模型以灵活地支持并发性。我注意到的一件奇怪的事情是,在更新期间,如果我们在多个行上运行一个运行SUM(balance)函数的查询,AWR报告显示57%的DB时间用于行锁争用。根据我在Oracle锁定文档中所读到的内容,任何读取都不能获取行上的锁,并且可以安全地读取提交的数据。如果需要成为SUM函数一部分的行之一已被Select for Update语句锁定,那么读取查询将需要等待直到锁被释放吗?
如果没有读取查询<
(根据MySQL手册,我还没有在TABLE_B.NUMBERS和TABLE_B.ASSOCIATEDNUMBERS上定义索引,因为外键约束会自动定义索引)每当我需要更改数字的ASSOCIATEDNUMBERS然而,这需要很长时间。特别是在我的多线程应用程序中,我打开到数据库的多个连接(每个线程),每个连接运行在两个以上的查询(但每个查询都有不同的编号)。如果我增加连接的数量,那么时间也会增加。SHOW GLOBAL STATUS LIKE 'Threads_running