热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python第四十四天存储引擎,索引,慢日志,权限管理

1.存储引擎createtabletest(idintauto_incrementprimarykey,namevarcharnotnulldefault
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;


推荐阅读
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
author-avatar
ciaos
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有