mysql LOCK TABLES
加解锁时相对于连接而言的,而不是针对线程。
以下所述的线程均是发起一个单独连接的线程。在多线程的mysql程序中,最好是一个线程发起一个链接,否则有隐患。
多线程共享一个连接的话,两个线程同时去操作一个表,会有异常。那么能否在多个连接上同时操作同一张数据表?
我遇到这样一个问题:
在数据库上建立多个连接,所有连接都更新同一张数据库表。其中,不同的连接是在不同的进程或线程中完成的,执行的操作是 INSERT。
这样的操作是否行得通?
------解决方案--------------------------------------------------------
可以执行,MYSQL会自动加锁控制
refer to http://www.myexception.cn/mysql/206922.html
经过测试可以。那就没必要手动表锁了,如下。
锁定表Bind
LOCK TABLES Bind READ;
之后所有线程(包括执行加锁的线程本身)均可读取表Bind ,但均不能写入表Bind
锁定表Bind
LOCK TABLES Bind WRITE;
之后只有本线程可读取和写入表Bind ,其他不能读也不能写入表Bind (使用select * from t 测试之)
解除本线程对所有表加的所有锁,无法解除其他线程加的锁;线程没有加锁退出时,其所加锁自动解除。
UNLOCK TABLES
string sSql="LOCK TABLES Bind WRITE";if(!pDB->exec(sSql)){DBGMYSQL("%s failed",sSql.c_str());}else{DBGMYSQL("%s success",sSql.c_str());}
查看当前所有连接
SHOW PROCESSLIST;
获取表的记录条数
SELECT COUNT(Cur) AS num FROM DevLog_Value
http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html
转载于:https://www.cnblogs.com/-song/archive/2013/06/13/3331807.html
mysql LOCK TABLES相关推荐
- mysql数据库备份提示1577_mysqldump备份数据库时出现when using LOCK TABLES的提示
下面是对事务表使用LOCK TABLES的说明:在尝试锁定表之前,LOCK TABLES不是事务安全型的,会隐含地提交所有活性事务.同时,开始一项事务(例如,使用START TRANSACTION), ...
- lock字段mysql_MySQL的lock tables和unlock tables的用法(转载)
早就听说lock tables和unlock tables这两个命令,从字面也大体知道,前者的作用是锁定表,后者的作用是解除锁定.但是具体如何用,怎么用,不太清楚.今天详细研究了下,总算搞明白了2者的 ...
- LOCK TABLES
http://blog.csdn.net/zyz511919766/article/details/16342003 http://blog.csdn.net/zyz511919766/article ...
- lock mysql unlock_MySQL中的lock tables和unlock tables
MySQL允许客户端会话显式地获取表锁,以便与其他会话协作访问表,或者防止其他会话在其需要独占表时使用表.这个能力就是通过LOCK TABLES和UNLOCK TABLES实现的. LOCK TABL ...
- mysql 1100_错误代码:1100 Table 't_depart_info' was not locked with LOCK TABLES的解决方法
一步步来分析错误代码的生成原因,大家要有耐心哦. 第一步,错误描述 1 queries executed, 0 success, 1 errors, 0 warnings 查询:insert into ...
- mysql中lock tables与unlock tables(锁表/解锁)
在某个地方看到有个例子,具体描述类似如下:商店现在某商品只有1件库存,然后A与B在网上进行下订,A与B几乎同时(或许也就差几毫秒,A比B快那么一点点)进行. 很明显是只有A才能成功下单的,B则会收到库 ...
- FLUSH TABLES WITH READ LOCK 和 LOCK TABLES
今天在解决数据库同步异常的时候用到了flush tables with read lock 这个命令,于是顺便就学习了下锁表的相关知识. 1.FLUSH TABLES WITH READ LOCK 这 ...
- FLUSH TABLES WITH READ LOCK 和 LOCK TABLES比较
1.FLUSH TABLES WITH READ LOCK 这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读.一般都是用在数据库联机备份,这个时候数据库的写操作将被阻塞,读操作顺利进行.解 ...
- mysqldump: Got error: 1016: Can't open file: './xxx.frm' (errno: 24) when using LOCK TABLES
mysqldump导出备份数据库的时候出现下面的错误: mysqldump: Got error: 1016: Can't open file: './bdm0140379_db/lady_forum ...
最新文章
- python qq签到_Python开发qq批量登陆
- 读javascript高级程序设计13-JSON
- Spring Boot html页面解析之jsoup
- HDU杭电2066 - 一个人的旅行(Dijkstra算法)
- 十荟团创始人发表内部信,公布下半场业务的全面升级规划
- Java的Stack类
- train problem I (栈水题)
- Java-创建图片验证码descriptor
- java微调器_java-更改微调器标题栏样式
- 学c语言和51单片机的作业,《手把手教你学51单片机(C语言版)》例程和源码
- 车联网的麻烦和便利一样多 BAT们要治这种尴尬症
- MATLAB对数坐标图和统计图(semilogy/loglog)
- 筋膜枪方案-无刷马达方波运用1
- python 微信授权 昵称乱码解决
- 入坑数据分析的几个问题——学习、面试、作报告
- ExifTool 抽取、修改Image tag 信息
- 微信号码开通状态检测
- 功率谱(PS)和功率谱密度(PSD)是否一样、谱估计谱图纵轴数值为什么为负
- 18北大考研经验贴汇总
- 如何选择适合自己的吉他弦(下)