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


    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;

  • 相关阅读:
    .NET面试题系列(五)数据结构(Array、List、Queue、Stack)及线程安全问题
    一个使用 Go 的思维来帮助您构建并开发 Go 应用程序的开源框架
    UML类图学习
    服务器防攻击手段
    .NET面试题系列(四)计算机硬件知识
    .NET面试题系列(三)排序算法
    ASP.NET MVC学习(五)之MVC原理解析
    socketWriter.go
    multiWriter.go
    timeCache.go
  • 原文地址:https://www.cnblogs.com/liguodeboke/p/11042054.html
Copyright © 2020-2023  润新知