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

MySQL 的表级锁

 在开发项目时,遇到一个问题,就是要随机读取一张表的部分记录,并update设置为不可在读,这里就有一个问题,可能多个人同时随机到相同的记录,并重复做update操作,引起数据脏读和重复操作,
因此考虑给表加锁。但是采用了MyISAM,不支持事务,只能加表级锁,而且别人连读的权限都没有。下面是2个测试文件,在firefox运行test.php,在ie里运行test1.php,会发现,火狐运行后10秒内,ie里处于等待状态,其实就是test.php里给表加了锁,网页没运行结束,锁未被释放,当10秒过后,锁自动被释放,ie里马上出现内容了,这样做实现了随机读取表的记录并修改,但是带来的缺憾是锁表期间,其他进程对该表的读的权限也没有,也就是用户在操作表记录时,管理员都没有读的权限,还是得修改表引擎,换成innodb,用事务来解决。
test1.php
 $db=new db();
$db->locktable("LOCK TABLES sbs_temp WRITE");
$sql="select * from sbs_temp limit 5";
$rs=$db->getRs($sql);
foreach($rs as $row) {
echo $row['query']."<br>";
}

test.php
$db=new db();
$db->locktable("LOCK TABLES sbs_temp WRITE");
$sql="select * from sbs_temp limit 5";
$rs=$db->getRs($sql);
foreach($rs as $row) {
echo $row['query']."<br>";
}
sleep(10);


相关文档:

使用mysql中的with rollup得到group by的汇总信息

使用mysql中的with rollup可以得到每个分组的汇总级别的数据:
表如下:
CREATE TABLE `test3` (
  `id` int(5) unsigned NOT NULL AUTO_INCREMENT,
  `name1` varchar(10) DEFAULT NULL,
  `name2` varchar(10) DEFAULT NULL,
  `cnt` int(2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGI ......

jsp连接mysql对数据库进行操作乱码的解决


如果jsp插入mysql数据库出现乱码,mysql数据库安装时编码设为utf8,在执行插入语句的前面(紧挨着执行语句)添加转码语句:String na="";
                  try{
          &nbs ......

mysql重新安装时服务无法启动错误解决办法

MySQL安装目录下的Data目录中 .err错误信息:
Default storage engine (InnoDB) is not available
解决办法:
删除在MySQL安装目录下的Data目录中的 
ib_logfile0 
ib_logfile1 
重新启动MySQL的Service  ......

ms sql到mysql的移植:关于数据类型移植的一些问题

   ms sql中的int型默认是4位,mysql的int型默认是11位,前者到后者的移植不会有什么隐患,但是后者到前者的移植就存在位数不够,不能存储大数的隐患。
   还有bigint,ms sql是8位,mysql默认是20位。 ......

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

为什么这么说呢。因为啊我写我公司的查PV的数据时,发现表的功能不是很全,让我用一句话写出那么老牛的SQL语句真的好难。
真么着吧,我写出我这句话来看一看。
<?php
//########################2010-1-24 22:48
//#######################数据库查询
//######################本程序共有3个sql分别为sql,sql5,sql ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号