您的位置:首页 > 数据库 > MySQL

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

2016-04-28 13:57 716 查看

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))
begin
declare s int;
set s =0;
while n<5 do
set n = n+n;
end while;
set s = n;
if j ='a' then
select * from Persons where Id<s;
else
select * from Persons where Id>s;
end if;
end$


删除存储过程

drop procedure 存储过程名字;

查看存储过程

show procedure status;

存储过程和函数的区别?

1. 名称不同

2. 没有返回值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql