mysql 事物与锁

人物

姜承尧


zabbix 监控工具

1. mysql 数据类型


锁  与 事务有关系吗



事务

原子性:事务中的操作要么全部成功,要么全部失败

一致性:数据库从一个一致状态转移到另一个一致状态

隔离性:在事务提交前,一个事务的通常另外一个事务不可见。READ UNCOMMITTED ,READ COMMITTED ,REPEATABLEREADSERIALIZABLE

持久性:事务提交后,数据持久保存。




事务测试

1.打开四个客户端 连接

mysql -h localhost  -u root -p


2.查看设置事务的隔离级别

查询当前会话的隔离级别

select @@tx_isolation;

设置客户端1的隔离级别为 读取未提交

 set session transaction isolation level read uncommitted;


设置客户端3的隔离级别为 读取提交

 set session transaction isolation level read committed;


设置客户端4的隔离级别为 可重复读

set session transaction isolation level  repeatable read;


3.所有客户端 开启事务执行查询操作

start transaction ;  // 或者 begin 开启事务

select * from blog where  id =1 ;


4.客户端2 执行更新操作(还未提交)

update blog set title =‘未提交’ where id =1;


客户端1 ,3 ,4 再次进行查询操作

其中客户端1能够看到修改的数据,客户端3,4不能查询修改的数据。


5.客户端2提交事务 , 客户端1,3,4 再次查询

commit;

客户端1,3 都能看到修改的数据,客户端4查询的数据 看不到修改。


http://blog.csdn.net/fg2006/article/details/6937413


myisam 适合插入选择


6 查询增加锁

select  ... lock in share mode;

select  ... lock for update;


锁等待时间设置

  set global innodb_lock_wait_timeout =2 ;


表的数据 更新 和 删除 会在数据上加锁,锁 增加在索引上,当更新条件不含有索引,则锁加在表上。


7.mysql 自动处理死锁,回滚一个事务,

事务 1 

 update blog set content ='2' where id ='1';

                                                                         事务2

update blog set content = '1' where id ='2';

 update blog set content ='2' where id ='2';

 update blog set content = '1' where id ='1';


 




 select sleep(1);


4.数据类型

4.1使用可满足范围的最小的数据类型,减少磁盘的读写

4.2 varchar 使用额外的字节记录数据的长度

4.3 只分配最小的可用空间

4.4使用无符号整数代理ip地址,inet_aton(),inet_NTOA()

4.5计数器表,update hit_count set cnt = cnt +1 where slot = RAND() *100;  避免更新同一列时串行。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值