博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python第四十四天 存储引擎,索引,慢日志,权限管理
阅读量:4305 次
发布时间:2019-06-06

本文共 2861 字,大约阅读时间需要 9 分钟。

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:\program\mysql-5.6.44-winx64\data\oldboy-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

你可能感兴趣的文章
通过Navicat远程连接MySQL配置
查看>>
phpstorm开发工具的设置用法
查看>>
Linux 系统挂载数据盘
查看>>
Git基础(三)--常见错误及解决方案
查看>>
Git(四) - 分支管理
查看>>
PHP Curl发送数据
查看>>
HTTP协议
查看>>
HTTPS
查看>>
git add . git add -u git add -A区别
查看>>
apache下虚拟域名配置
查看>>
session和cookie区别与联系
查看>>
PHP 实现笛卡尔积
查看>>
Laravel中的$loop
查看>>
CentOS7 重置root密码
查看>>
Centos安装Python3
查看>>
PHP批量插入
查看>>
laravel连接sql server 2008
查看>>
Laravel 操作redis的各种数据类型
查看>>
Laravel框架学习笔记之任务调度(定时任务)
查看>>
laravel 定时任务秒级执行
查看>>