zoukankan      html  css  js  c++  java
  • 存储引擎,索引,慢日志,权限管理

    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;

  • 相关阅读:
    Android开发总结
    LeakCanary原理分析
    机器学习
    Kivy 中文教程 实例入门 简易画板 (Simple Paint App):2. 实现绘图功能
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 3. 循环
    Kivy 中文教程 实例入门 简易画板 (Simple Paint App):1. 自定义窗口部件 (widget)
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 2. 变量
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 1. 神秘朋友
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 0. 准备工作
    远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)
  • 原文地址:https://www.cnblogs.com/liguodeboke/p/11042054.html
Copyright © 2011-2022 走看看