易截截图软件、单文件、免安装、纯绿色、仅160KB

MySQL中select * for update锁表的问题


select * for update锁表的问题
由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的资料例) ,否则MySQL将会执行Table Lock (将整个资料表单给锁住)。
举个例子:
假设有个表单products ,里面有id跟name二个栏位,id是主键。
例1: (明确指定主键,并且有此笔资料,row lock)
SELECT * from products WHERE id='3' FOR UPDATE;
例2: (明确指定主键,若查无此笔资料,无lock)
SELECT * from products WHERE id='-1' FOR UPDATE;
例2: (无主键,table lock)
SELECT * from products WHERE name='Mouse' FOR UPDATE;
例3: (主键不明确,table lock)
SELECT * from products WHERE id<>'3' FOR UPDATE;
例4: (主键不明确,table lock)
SELECT * from products WHERE id LIKE '3' FOR UPDATE;
注1: FOR UPDATE仅适用于InnoDB,且必须在交易区块(BEGIN/COMMIT)中才能生效。
注2: 要测试
锁定的状况,可以利用MySQL的Command Mode ,开二个视窗来做测试。


相关文档:

Mysql my.ini 配置文件详解

Mysql my.ini 配置文件详解
#BEGIN CONFIG INFO
#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大
#TYPE: SYSTEM
#END CONFIG INFO
#
# 此mysql配置文件例子针对4G内存
# 主要使用INNODB
#处理复杂队列并且连接数量较少的mysql服务器
#
# 将此文件复制到/etc/my.cnf 作为全局设置,
# mysql-data-d ......

MYSQL自带工具Query Profiler使用

Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在什么地方。通常我们是使用的explain,以及slow query log都无法做到精确分析,但是Query Profiler却可以定位出一条SQL语句执行的各种资源消耗情况,比如CPU,IO等,以及该SQL执行所耗费的时间等。不过该工具只有在MYSQL 5.0.37以 ......

JDBC连接MySQL数据库实现增删查改

package com.qll.operate;
import java.sql.*;
public class OperateUser {
 String driver = "com.mysql.jdbc.Driver";
 String url = "jdbc:mysql://localhost:3306/test";
 String name = "root";
 String password = "123456";
 static Connection conn = null;
 Statement st = ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号