mysql事务后半部分
加快查询速度索引会自动排序,(升序)
select * from t1;全盘扫描
where可以索引查找show create table
索引是一个排序的列表,包含字段值和相应行数据的物理地址
事务是一种机制,一个操作序列(一组操作命令),事务会把所有命令当作一个整体提交或撤销操作,要么都执行要么都不执行
事物的acid特性:原子性,事务管理的基础。把事务看成一个不可分割的整体
一致性,事务管理的目的。让事务开始前和事务结束后保证数据的完整和一致
隔离性,事务管理手段。使多个事务并发操作同一个表数据时,每个事务都有各自的数据空间,通过隔离级别解决不同的一致性的问题。
隔离级别:未提交读RU,提交读RC,可重复读RR,串行读serializable(相当于报表级锁定)
持久性:事务管理的结果。当事务被提交后,命令修改的结果会被永久保存,且不会被回滚
begin;开启事务
commit;
rollback;
savepoint XX;
rollback to XX;
show variables like ‘autocommit’
set autocommit=0/1;
mysql 连接器
存储引擎使mysql将数据存储在文件系统中的存储当时或者存储格式
常用引擎
myisam innodb
mysql数据库中的组件,负责实际的数据io操作
mysql系统中,存储引擎处于文件系统上,在数据
保存到数据文件之前会传输到存储引擎,之后按照各个存储引擎的存储格式进行存储
myisam
不支持事务,不支持外键,只支持全文搜索,数据文件和索引文件时分开保存的
适合查询,插入为主的应用
访问速度块,对事物王整形没有要求
分开存储的文件名和表明形同.frm文件存储表结构的定义
数据文件的扩展名为.myd(mydata)
索引文件的扩展名.myi(myindex)
myisam特点
静态表固定长度优点是存储迅速,容易缓存,出现故障易恢复。缺点占用空间大
动态表可变字段,记录不是固定长度,优待点占用空间小但是频繁的跟新和删除会产生碎片定期执行optimize table或myisamchk -r 改善性能
压缩表由myisamchk工具创建,占用空间小但是会损失性能
一致性由事务保证
innodb
支持事务,支持4个事务隔离级别
mysql从5.5开始,默认的存储引擎为innodb
读写阻塞于事务级别有关
能非常高效的缓存索引和数据
表与主键以簇的方式存储
支持分区表,类似oracle数据库
支持外键约束,5.5前不支持,5.5后支持全文索引
对硬件资源要求还是比较高的场合
行级锁定,但要全表扫描任然会试表级锁定
select * from member
update table set a=1 where user like '%zhang%';
like模糊查询
select count(*) from table;全局扫描有myisam会预先保存好简单的行数 count(*)后有where时myisam也需要全局扫描
innodb只有字段做索引是行级锁定,没有表级锁定
innodb和myisam区别
特点上的区别
innodb 行锁定但是全表扫描,like ,count(*)仍然是表级锁定,读写并发能力较好,在5.5版本才支持全文索引,缓存能力较好可以减少磁盘io的压力 .ibd
myisam不支持事务,外键约束,支支持表级锁定,单独查询的或写入速度较快,读写并发能力交差,支持全文索引,占用的资源较少,适合服务器硬件较差的服务器使用
使用场景
区别innodb 适用于一致性要求较高,数据频繁更新的高并发读写业务场景。表数据和索引是存储在一个表中
myisam适用于不需要事务处理,单独的插入或查询数据的业务场景。数据文件和索引文件是分开存储的
show engins;
csv行的内容以,相间阁
show create table member
show table status from kgc查看库中所有表的状态
show table status from kgc where name='member'\G查看
修改alter table member engine = myisam