mysql-innodb-复合键上的行级锁如何在简单单词中工作

wwodge7n  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(240)

各位,我阅读了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列的索引。

如果需要其他解释,请告诉我?
谢谢。

v1uwarro

v1uwarro1#

行级锁定不是问题所在。
你在用经纬度搜索“附近”的东西?
好吧,不需要任何额外的努力,这将需要一个表扫描,这是越来越慢,因为表的增长。
将“边界框”添加到 WHERE 条款。如果这还不够快,那么返回查询和表大小。使用边界框的示例:

WHERE lat BETWEEN 45.45 - 0.77 AND 45.45 + 0.77
  AND lng BETWEEN 99.11 - 1.11 AND 99.11 + 1.11

将过滤到距离(45.45,99.11)50英里以内的项目。“盒子”大约是一个正方形。增加距离检查可以让你得到“在xx英里/公里的半径范围内”。

相关问题