摘要: 为了给高并发情况下的mysql进行更好的优化,有必要了解一下mysql查询更新时的锁表机制。一、概述MySQL有三种锁的级别:页级、表级、行级。MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-levellocking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。MySQL这3种锁的特性可大致归纳如下:表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度 阅读全文
posted @ 2013-12-19 15:05 幻星宇 阅读(308) 评论(0) 推荐(0) 编辑
摘要: INSERT into a(value) values ('test');#set @last_id = LAST_INSERT_ID();set @last_id = (select max(id) from a);INSERT INTO b (a_id, `value`) values (@last_id, 'aaaa');INSERT INTO b (a_id, `value`) values (@last_id, 'tetete');INSERT into a(value) values ('bbbtest');set @ 阅读全文
posted @ 2013-12-19 14:07 幻星宇 阅读(2093) 评论(0) 推荐(0) 编辑
摘要: 1. 语法介绍 有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,可以使用如下的语句来实现:INSERTINTOdb1_name (field1,field2)SELECTfield1,field2 FROM db2_name 上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,可以先将需要查询的字段JOIN起来,然后组成一个视图后再SELECT FROM就可以了:INSERT INTOa (field1,field2)SELECT* FROM(SELECT b.f1,c.f2 FROM bJOINc) AS tb ... 阅读全文
posted @ 2013-12-19 14:06 幻星宇 阅读(1269) 评论(0) 推荐(0) 编辑