liunx中mysql版本为5.7存储引擎为innodb中行锁和表锁


查看事物是开启还是没有开启;

show variables like “autocommit”;


set autocommit=0,
当前session禁用自动提交事物,自此句执行以后,每个SQL语句或者语句块所在的事务都需要显示"commit"才能提交事务。

start transaction

指的是启动一个新事务。

     在默认的情况下,MySQL从自动提交(autocommit)模式运行,这种模式会在每条语句执行完毕后把它作出的修改立刻提交给数据库并使之永久化。事实上,这相当于把每一条语句都隐含地当做一个事务来执行。如果你想明确地执行事务,需要禁用自动提交模式并告诉MySQL你想让它在何时提交或回滚有关的修改。
执行事务的常用办法是发出一条START TRANSACTION(或BEGIN)语句挂起自动提交模式,然后执行构成本次事务的各条语句,最后用一条COMMIT语句结束事务并把它们作出的修改永久性地记入数据库。万一在事务过程中发生错误,用一条ROLLBACK语句撤销事务并把数据库恢复到事务开始之前的状态。

       START TRANSACTION语句"挂起"自动提交模式的含义是:在事务被提交或回滚之后,该模式将恢复到开始本次事务的START TRANSACTION语句被执行之前的状态。(如果自动提交模式原来是激活的,结束事务将让你回到自动提交模式;如果它原来是禁用的,结束当前事务将开始下一个事务。)

如果是autocommit模式  ,autocommit的值应该为 1 ,不autocommit 的值是 0 ;请在试验前 确定autocommit 的模式是否开启

查看SQL的存储引擎;

show engines;


 存储引擎是innodb,使用分享锁lock in share mode;


   当session2中插叙加上lock in share mode 会一直等待,和不加共享锁的得到的数据是不一样的;

测试engines引擎为innodb的存储

在引擎为innodb时索引为判断条件在加上排他锁for update 这就是行锁


在引擎为innodb时索引判断条件不是索引时加上排它锁for update 这就是表锁

也就是整个表都锁住了,调用表中其他行的数据也是不行的

mysql数据库: 主键 索引 关系

1.主键:主键的唯一作用就是唯一标识表中的某一行数据。分为单一主键和联合主键:
 单一主键:只用一列就能唯一标识一行。
 联合主键:当使用一列已经不能唯一标示一行的时候,就要采用多列唯一标识一行,就是联合主键。
 

2.索引:索引的作用就是提高数据的检索速度,分为单一索引和联合索引:
  单一索引:只是用某一列数据作为索引,默认是index索引,这一列可以包含重复数据;如果某一列不存在重复数据最好设置成unique形式的索引,比index的索引速度更快,在text数据上要使用fulltext索引。
  联合索引:为了更进一步提高检索速度,每次检索都需要用多列同时进行时,就可以把这多列设为联合索引,提高索引速度,根据多列是否唯一,也分为index索引和unique索引。
 联合索引的使用必须注意:不能垮字段使用,比如a b c联合索引 只有a|ab|abc 才能用上联合索引字段。

3.主键一定是索引,但是索引不一定是主键。一个表只能有一个主键或联合主键,但是可以有多个索引。
   主键字段必须不能为空,但是索引字段可以为空。

给表中的字段添加索引:

alter table user add unique index_id(id);

常用的集中添加索引的方式:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值