数据库中的常见引擎,索引,慢日志,用户权限的设置
数据库中的常见引擎 :
有三种常见储存引擎:
innodb :
1.(默认版本包含5.5)
2.支持事务
3.不支持全文索引
4.索引和数据都是在同一个文件中, .ibd表的结构实在.frm文件中
mylsam;
1.(默认版本5.5以下 5.3)
2.不支持事务
3.支持全文索引
4..frm: 表结构
.MYD: 表数据
.MYI: 表索引
memory:
全文索引: sphinx
索引的目的就是为了加速查询速度:
索引:
数据库中的索引有三种
1,主键索引:
作用是:便于数据查找,不能为空,不能重复, primary key
2,唯一索引:
作用: 加快数据的查找速度,不能重复,可以为空,unique(列名)
联合唯一索引:加快查询 + 不能重复 unique(列名1,列名2)
3,普通索引:
作用: 加快查询 index(列名)
创建主键索引的方法:
1.创建表的时候创建主键:
create table t1( id int auto_increment primary key, # 创建主键 name char(12) not null default ' ' )engine=innodb charset=utf8
2,表已经存在了,创建主键
#表已经存在创建主键 alter table t1 change id id int auto_increment primary key;
创建唯一索引的方法:
1,创建表的时候创建唯一索引:
#创建唯一索引 #可在创建表的时候直接在需要创建唯一索引的属性后面添加unique #第一种方式 create table t1( id int auto_increment primary key, name char(12) not null default ' ' unique ) #第二种方式,在创建表时在最后的属性后面添加unique ix_name (属性名) create table t1( id int auto_increment primary key , name char(12) not null default '', unique ix_name (name) )engine=innodb charset=utf8 #创建联合唯一属性 create table t1( id int auto_increment primary key, name char(12) not null default ' ', age int not null, unique ix_name_age (name,age) )engine=innodb charset=utf8
2,表已经存在了,创建唯一索引:
#表已经存在了,需要添加唯一索引 create unique index ix_name on t1 (name); #表已经存在了,创建联合唯一索引 create unique index ix_name_age on t4 (name,age)
创建普通索引的方法:
1,表已经存在,需要创建普通索引:
#表已经存在,创建普通索引 create index ix_age on t1 (age);
2,在创建表的时候创建普通索引
#在创建表的时候创建普通索引 create table t1( id int auto_increment primary key, name char(32) not null default '', age int not null index ix_age(age) ) engine=innodb charset=utf8
删除索引:
#drop index (索引名称) on (表名称) #实例: drop index ix_age on t1
索引的使用:
explain 工具
查看sql语句是否用的上索引, 或者查看sql执行效率的工具
给执行的SQL语句出一个报告, 通过此报告来判断sql语句的执行效率和效果
ES (elasticsearch )
SQL语句的规则:
- 不建议使用 like 进行搜索
- 组合索引最左前缀
如果组合索引为:(name,email)
where name and email -- 使用索引
where name -- 使用索引
where email -- 不使用索引
慢日志:
记录执行速度特别慢的sql语句.
开启mysql 中的慢日志步骤:
1, show variables like '%query%'; (查看慢日志的状态是什么样的)
2,set global long_query_time = 1 (设置慢查询的时间,超过这个时间就是比较慢的sql语句)
3,set global slow_query_log = 'ON' (开启慢日志,默认为OFF)
4,slow_query_log_file = D:\MySQLp\mysql-5.6.44-winx64\data\bochen-PC-slow.log (这是一个文件,存放哪些速度比较慢的sql语句)
关闭慢日志:
set global slow_query_log = 'OFF';
普通日志记录; 开启普通日志记录后,我们在数据库中操作的每一条sql都会记录下来
show variables like '%general%'; (查看普通日志记录是什么状态)
+------------------+------------------------------------------------+------------------------+
| Variable_name | Value |
+------------------+------------------------------------------------+------------------------+
| general_log | ON |
| general_log_file | D:\MySQLp\mysql-5.6.44-winx64\data\bochen-PC.log
+------------------+------------------------------------------------+------------------------+
开启普通日志记录:
set global general_log = 'ON';(开启普通日志记录)
general_log_file (是存放日志文件路文件路径)
关闭普通日志文件:
set global general_log = 'OFF' ( 关闭普通日志文件)
权限管理:
创建用户 create user '用户名'@'IP地址' identified by '密码'; creaee user 'zekai'@'192.168.1.123' identified by '123qwe'; creaee 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地址' -- 授权 grant select on db1.* to 'zekai'@'%'; grant select on *.* to 'zekai'@'%'; grant select, insert, delete on db1.* to 'zekai'@'%';
需要记住的是:
flush privileges; (刷新缓存,用于数据库中修改某一个值时候进行操作)