热门标签 | 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;


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
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社区 版权所有