各位,我阅读了mysql5.5的参考手册,但是要理解行级锁定是非常困难的。我正在使用mysql innodb,想了解一个表的行级锁定,这个表有复合主键。这两个键都是从父表中一对一标识键。
下面是表格示例
我想对上表运行haversine formula(我知道查询和公式),这样在where子句中我必须提供trip\u route\u id。这样haversine formula查询就可以对特定的trip\u route\u id运行。
另一方面,一些线程/会话在搜索时插入到这个表中。我在两个pk列上都有一个默认的主索引。
现在的问题是:我的整个表是锁定的还是只锁定了trid\u route\u id=someprovidedid的行?
编辑:pk列的索引。
如果需要其他解释,请告诉我?
谢谢。
1条答案
按热度按时间v1uwarro1#
行级锁定不是问题所在。
你在用经纬度搜索“附近”的东西?
好吧,不需要任何额外的努力,这将需要一个表扫描,这是越来越慢,因为表的增长。
将“边界框”添加到
WHERE
条款。如果这还不够快,那么返回查询和表大小。使用边界框的示例:将过滤到距离(45.45,99.11)50英里以内的项目。“盒子”大约是一个正方形。增加距离检查可以让你得到“在xx英里/公里的半径范围内”。