Mysql(四)- 存储引擎和事务,备份和恢复,索引,存储过程

来源:互联网 发布:养牛软件下载 编辑:程序博客网 时间:2024/05/22 04:46

1. 存储引擎

数据库对同样数据,有着不同存储方式和管理方式

Mysql 存储引擎包括:
MyISAM、InnoDB、MEMORY、MERGE、ARCHIVE等,其中前两种比较常用。

查询所有存储引擎:show engine;

Myisam vs InnnoDB
批量插入 : 快 VS 慢
事务安全 : 不支持 VS 支持
全文索引 : 支持 VS 5.5版本支持
锁机制 : 锁表 VS 锁行

2. 事务

事务的ACID特性:
· 原子性 : 指一组操作,要么都执行成功,要么都不执行
· 隔离性 : 在所有操作完毕前,其他会话不能看到中间改变过程
· 一致性 : 数据发生前后,数据总额保持一致
· 持久性 : 事务产生的影响不能够撤销,如果出错,只能使用补偿性事务

事务语法:

 start transaction; sql 语句; commit ; / rollback;

隐式提交语句,部分语句会造成事务的隐式提交;

使用事务前:
update -> 提交并作用到数据上 -> 表数据文件
start transcation ; update -> 事务日志文件,及sql 影响 -commit -> 表数据文件

3. 备份与恢复

常用备份方式 : 增量备份 和 全量备份
mysqldump : mysql 自带备份工具

备份表
mysqldump -u root -p STDB Persons > /home/0428_1.sql;
备份库下所有表
mysqldump -u root -p STDB > /home/0428_2.sql;
备份库
mysqldump -u root -p -B STDB > /home/0428_3.sql;
备份所有库
mysqldump -u root -p -A > /home/0428_4.sql;

进入mysql 恢复库:
1. source /dir/filename
进入mysql 恢复表 :
1. use 库名;
2. source /dir/filename;

未进入mysql 恢复库:
mysqldump -uroot -p123456 < /dir/filename ;
mysqldump -uroot -p123456 库名 < /dir/filename;

4. 索引

作用 : 加快查询速度,针对数据建立的目录
索引算法 : 二叉树索引 ,哈希索引
好处 : 加快查询速度
缺点 :
- 降低增删改速度
- 增大表文件大小
注意点
- 不要过度索引
- 索引条件列,where 后面查询频繁比较适合索引
- 索引散列值,过于集中值不要索引
索引类型
- 普通索引 : 仅加快查询速度
- 主键索引 : 行的值不能重复;主键必须唯一,唯一索引不一定是主键;一个表只能有一个主键,但可以有多个唯一索引
- 唯一索引 : 行的值不能重复
- 全文索引 : fulltext index
. MYI 是索引文件

查询索引 : show index from tableName ;
创建索引:
alter table tableName add index/unique/fulltext 索引名(列名);
alter table tableName add primary key (列名);
删除索引:
alter table tableName drop index 索引名;
alter table tableName drop primary key;

全文索引
查询语句:
select * from tableName where match( columnName ) against (‘内容’) ;
停止词:常见单词,不会添加索引
对于中文没有空格隔开单词,mysql无法识别每个中文词,所以对中文发挥作用不大,中文分词是个大课题

5. 存储过程

类似于函数把一段代码封装,执行代码时,通过调用存储过程实现,封装语句可以使用 if /else ,case , while 等逻辑语句

创建存储过程:

create procedure p1(n int,j char(1))begindeclare s int;set s =0;while n<5 doset n = n+n;end while;set s = n;if j ='a' thenselect * from Persons where Id<s;elseselect * from Persons where Id>s;end if;end$

删除存储过程
drop procedure 存储过程名字;

查看存储过程
show procedure status;

存储过程和函数的区别?
1. 名称不同
2. 没有返回值

0 0
原创粉丝点击