存储引擎,索引,慢日志,权限管理

1.存储引擎

create table test(
  id int auto_increment primary key,
  name varchar not null default ''
)engine=Innodb charset=utf8;

1.1 存储引擎的分类

对不同的数据有不同的管理方式和存储方式,在mysql中称之为存储引擎

1). 文章,新闻等安全性要求不高的,选myisam
2). 订单,资金,账单,火车票等对安全性要求高的,选用innodb
3). 对于临时中转表,可以用memory型 ,速度最快

4). 中文全文索引:sphinx

复制代码
Innodb:
  1. 默认版本包含5.5
  2. 支持事务
  3.不支持全文索引
  4. 索引和数据都是在同一个文件中, ( .ibd )
    表的结构是在( .frm )文件中
复制代码
复制代码
MyIsam
    1. 默认版本5.5以下
    2. 不支持事务
    3. 支持全文索引
    4. .frm:表结构
        .MYD:表数据
        .MYI: 表索引
复制代码

2. 索引

2.1 作用:加快查询速度

2.2 类比:

新华字典的目录,可以将索引理解成一个特殊的文件。
如果没有这个文件的话,查询的是按照从前往后查找数据,
如果有这个文件的话,会按照一种特殊的数据结构(二叉树)查找数据

2.3 分类与创建和删除

1. 主键索引:加快查询 + 不能重复 + 不能为空  primary key

复制代码
第一种:

create table t1(
   id int auto_increment primary key,
   name varchar(32) not null default ''
)engine=Innodb charset=utf8;


第二种

    alter table t1 change id id int auto_increment primary key;
复制代码

2. 唯一索引:加快查询 + 不能重复  unique(列名)

      联合唯一索引: 加快查询 + 不能重复 unique (列名1,  列名2)

复制代码
第一种:
create table t1(
   id int auto_increment primary key,
  name varchar(32) not null default '',
  age varchar(32) not null default '',
  unique ix_name (name,age)  )engine=Innodb charset=utf8;

第二种:
  create unique index 索引名称 on 表名(列名);
    create unique index ix_name on t1(name);

  
联合索引:
  create unique index 索引名称 on 表名(列名1,列名2);
   create unique index ix_name_age on t1(name,age); 

复制代码

3. 普通索引:加快查询    index('列名')

复制代码
第一种:
create table t1(
   id int auto_increment primary key,
   name varchar(32) not null default '',
  index ix_name ('name')
)engine=Innodb charset=utf8

第二种:
create index 索引名称 on 表名 (列名);
  create index ix_name on t1 (name);
复制代码

4. 删除

drop 索引名称 on 表名;
  drop ix_name on t1;

2.4 使用场景与缺点

场景:使用频繁的列上加一个索引

缺点:

  版本5.3以下:
  删除和修改的速度就变慢了

  版本5.5以上:
  删除和修改的速度不是特别的慢

索引的使用

expain 工具

查看sql语句是否用得上索引,或者查看sql执行效率的工具

给执行的SQL语句出一个报告, 通过此报告来判断sql语句的执行效率和效果

SQL语句的规则:

- 不建议使用 like 进行搜索
- 组合索引最左前缀
如果组合索引为:(name,email)
where name and email -- 使用索引
where name -- 使用索引
where email -- 不使用索引

 3. 慢日志(slow log)

日志文件: 记录了执行速度特别慢的SQL语句

开启的步骤:
1. show variables like '%query%';
2. set global long_query_time = 1; 设置慢查询的时间
3. set global  slow_query_log = ON 
4. set global slow_query_log_file = E:programmysql-5.6.44-winx64dataoldboy-slow.log

普通日志记录(general log):

SQL审计 (记录sql的操作语句)
show variables like '%general%';

 

 4. 权限管理

创建用户

create user '用户名'@'IP地址' identified by '密码';
create user 'zekai'@'192.168.1.123' identified by '123qwe';
create user 'zekai'@'192.168.1.%' identified by '123qwe';
create user 'zekai'@'%' identified by '123qwe';

删除用户

drop user '用户名'@'IP地址';

修改用户

rename user '用户名'@'IP地址' to '新用户名'@'IP地址';

修改密码

set password for '用户名'@'IP地址' = Password('新密码')

授权:grant 权限 on 数据库.表 to '用户'@'IP地址' -- 授权

1. 给db1下的所有文件查看权限:

  grant select on db1.* to 'zekai'@'%';

2. 给所有数据库的查看权限:
  grant select on *.* to 'zekai'@'%';

3. 给db1下的所有文件查看,插入,删除权限:
  grant select, insert, delete on db1.* to 'zekai'@'%';

记住:
flush privileges;

原文地址:https://www.cnblogs.com/liguodeboke/p/11042054.html