对于以下情况,我是否需要显式锁定 mysql 表:
mysql 数据库用户名:db_user(并且只有一个)
Web 客户端会话:许多用户同时登录
由于 mysql 用户是单一的,但我与我的 Web 服务器有很多客户端会话。会发生什么(在一个表中插入记录,然后获取插入 ID 并将数据添加到另一个表):
- 许多网络会话都有单独的 db_user 副本。
- 许多浏览器会话的单个 db_user 副本。
- 任何其他。
请帮忙。
哈米特,
LOCK TABLES
简短的回答是否定的,你在做你描述的事情时不需要使用。
您只需要LOCK TABLES
在您希望确保您是唯一一个写入表的人时使用,例如,如果您想要INSERT
大量记录,并且希望操作尽可能快地发生。
mysqldump
您可以在命令创建的转储文件中看到这一点。以下是转储文件中的示例:
LOCK TABLES `tbl` WRITE;
/*!40000 ALTER TABLE `tbl` DISABLE KEYS */;
INSERT INTO `tbl` VALUES ...
/*!40000 ALTER TABLE `tbl` ENABLE KEYS */;
UNLOCK TABLES;