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

mysql 共享锁 排他锁 防插入锁

试验1
事务1:
#!/usr/bin/python
import time
import MySQLdb;
conn = MySQLdb.connect(host="localhost",port=3306,user="root",passwd="asdf",db="test",unix_socket="/data/mysql_3306/mysql.sock")
cursor = conn.cursor()
cursor.execute("select * from test")
while str!="1":
    str = raw_input()
cursor.execute("update test id=id-1")
while str!="exit":
    str = raw_input()
cursor.close()
conn.close()
在mysql命令行中输入以下:
mysql> select * from test;
当事务1中等待输入1时,显示出select匹配的行
当事务1中输入1时,显示结果如下:
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
结论:当select时会检测当前是否有事务会修改(比影响要确切一些)当前的记录时,才会被阻塞。
试验2
在事务1:
#!/usr/bin/python
import time
import MySQLdb;
conn = MySQLdb.connect(host="localhost",port=3306,user="root",passwd="asdf",db="test",unix_socket="/data/mysql_3306/mysql.sock")
cursor = conn.cursor()
cursor.execute("select * from test lock in share mode")
while str!="exit":
    str = raw_input()
cursor.close()
conn.close()
在mysql命令行中输入以下:
mysql> update test set id=id-1;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
结论:当事务中包含select ...lock in share mode的时候,相关记录将会被锁住,不允许进行修改。
试验3
执行下面的python脚本两遍,并且同时输入1,2之后
#!/usr/bin/python
import time
import MySQLdb;
conn = MySQLdb.connect(host="localhost",port=3306,user="root",passwd="asdf",db="test",unix_socket="/data/mysql_3306/mysql.sock")
cursor = conn.cursor()
cursor.execute("select * from test lock in share mode")
str = ""
while str!="1":
    str = raw_input()
while str!="2":
    str = raw_input()
cursor.execute("update test set id=id-1")
while str!="exit":
    str = raw_input()
cursor.close()
conn.close()
[root@TJSJHL196-139 tmp]# python test_transaction.py 
1
2
Traceback (most recent call la


相关文档:

mysql 中的 autocommit 变量

mysql> show variables like "autocommit";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
1 row in set (0.00 sec)
mysql>
设置完之后看看该值
你要开启一个事务,直接发送begin 。。。。commit就可以,何必要去 ......

保持简单即最优 Mysql的部署原则

今天读到
When should you store serialized objects in the database?

其中针对
FriendFeed使用Mysql来存储
作为引题,
建议在考虑此方案时一定要三思。为什么?参考这里
Kiss KISS KISS
. 其实
Schema-Less没有错,但不能什么场景都上此方案,要
分析利弊,减少不必要的应用层复杂度。
文中提到的Serializ ......

初探MYSQL。在我有效地心中留下一道阴影……

为什么这么说呢。因为啊我写我公司的查PV的数据时,发现表的功能不是很全,让我用一句话写出那么老牛的SQL语句真的好难。
真么着吧,我写出我这句话来看一看。
<?php
//########################2010-1-24 22:48
//#######################数据库查询
//######################本程序共有3个sql分别为sql,sql5,sql ......

linux mysql的安装及一些配置方法

1.检查以前安装的MySQL,卸载。
rpm -qa|grep -i mysql
rpm -e XXXXX
注如果出现两条相同的,则使用rpm -e --allmatches
2.安装rpm包。
rpm -ivh MySQL-server-community-5.1.37-0.rhel5.x86_64.rpm
rpm -ivh MySQL-shared-community-5.1.37-0.rhel5.x86_64.rpm
rpm -ivh MySQL-devel-community-5.1.37-0.rhel5.x86_6 ......

mysql禁止远程root登陆 (转)

解决方法:
1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -pvmwaremysql>use mysql;
mysql>update ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号