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

MySQL的表锁问题(一)

  在mysql手册里面有一段描述关于lock tables的语法的. LOCK TABLES
    tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}
    [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}] ...
UNLOCK TABLES
READ
当表不存在 WRITE 写锁时 READ 读锁被执行,这该状态下,当前线程不可以修改(insert,update,delete),其他线程的修改操作进入列队,当当前线程释放锁,其他线程修改被执行.
READ LOCAL
READ LOCAL和READ之间的区别是,READ LOCAL允许在锁定被保持时,执行非冲突性INSERT语句(同时插入)。但是,如果您正打算在MySQL外面操作数据库文件,同时您保持锁定,则不能使用READ LOCAL。对于InnoDB表,READ LOCAL与READ相同。
WRITE
除了当前用户被允许读取和修改被锁表外,其他用户的所有访问被完全阻止。注意的是在当前线程当WRITE被执行的时候,即使之前加了READ没被取消,也会被取消.
LOW_PRIORITY WRITE
降低优先级的WRITE,默认WRITE的优先级高于READ.假如当前线程的LOW_PRIORITY WRITE在列队里面,在未执行之前其他线程传送一条READ,那么LOW_PRIORITY WRITE继续等待.
当您使用LOCK TABLES时,您必须锁定您打算在查询中使用的所有的表。虽然使用LOCK TABLES语句获得的锁定仍然有效,但是您不能访问没有被此语句锁定的任何的表。同时,您不能在一次查询中多次使用一个已锁定的表——使用别名代替,在此情况下,您必须分别获得对每个别名的锁定。
手册给出了如下的例子:
mysql> LOCK TABLE t WRITE, t AS t1 WRITE;#此时锁定的应该算是t表和它的别名t1mysql> INSERT INTO t SELECT * from t;#此时使用了2次t表ERROR 1100: Table 't' was not locked with LOCK TABLESmysql> INSERT INTO t SELECT * from t AS t1;如果您的查询使用一个别名引用一个表,那么您必须使用同样的别名锁定该表。如果没有指定别名,则不会锁定该表。
mysql> LOCK TABLE t READ;mysql> SELECT * from t AS myalias;#因为不能访问没有被语句锁定的任何的表,应该算吧别名myalias算作表了ERROR 1100: Table 'myalias' was not locked with LOCK TABLES相反的,如果您使用一个别名锁定一个表,您必须使用该别名在您的查询中引用该表。
mysql> LOCK TABLE t AS myalias READ;mysql> SELECT * from t;#道理和上面类似ERROR 1100: Table 't' was not locked with LOCK TABLESmysql> SELECT * from t A


相关文档:

完美搞定phpMyAdmin“无法载入mysql扩展”

安装完phpmyadmin
大家经常出现的问题就是报错:“无法载入mysql扩展,请检查php配置”。
如果你使用的是php5.2以上的版本,请注意:php对服务的扩展功能做了一定的改动,也就是说,你安装php和扩展的方式也要做调整了。
主要的调整有两方面,一是PHP5.2以上的版本中,PHP.INI文件无需添加到WINDOWS目录下。二 ......

MySQL常用命令总结

 原文链接:http://bbs.linuxtone.org/thread-991-1-1.html
IT运维专家网--"自由平等,互助分享!"
===MySQL基础====
mysql
下载
: http://www.mysql.com/
mysqld 常规MySQL服务器
mysqld-opt 优化
mysql服务
器,提供一些功能可以挖掘更好的功能
mys ......

mysql维护常用命令

Analyze Table
MySQL 的Optimizer(优化元件)在优化SQL语句时,首先需要收集一些相关信息,其中就包括表的cardinality(可以翻译为“散列程度”),它表示某个索引对应的列包含多少个不同的值——如果cardinality大大少于数据的实际散列程度,那么索引就基本失效了。
我们可以使用SHOW& ......

mysql 报错代码说明

mysql出错了,以前往往靠猜.有了这张表,一查就出来了.方便不少.特共享于众 
1005:创建表失败 
1006:创建数据库失败 
1007:数据库已存在,创建数据库失败 
1008:数据库不存在,删除数据库失败 
1009:不能删除数据库文件导致删除数据库失败 
1010:不能删除数据目录导致删除数据库失 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号