一、mysql索引:提高数据库的性能(不用加内存,不用改程序,不用调sql,查询速度就可能提高百倍千倍)索引会占用磁盘空间

CREATE   INDEX   索引名   ON   数据表 (列名or字段名)

注意:对于创建的索引,只会对创建索引的字段提升速度,没有创建索引的字段,在很大的数据时,仍然很慢,不会提升速度;

1、索引的原理:(会形成一个索引的数据结构)比如:二叉树,B+树等

(没有索引时:查询语句会进行全表扫描)

代价:

1)、磁盘占用

2)、如果表添加了索引,对表进行dml(修改,删除,添加)操作会有影响,理由:每次对数据库进行更改后,都会对索引的数据结构进行维护,消耗时间

2、mysql索引的类型

1).主键索引,主键自动的为主索引(类型Primary key)

2).唯一索引(UNIQUE)
3).普通索引 (INDEX)
4).全文索引(FULLTEXT)[适用于MyISAM],开发中不使用此全文索引
开发中考虑使用:全文搜索框架Solr和 ElasticSearch (ES)

2、索引使用

1)、添加索引方式

如何选择

(1)如果某列的值,是不会重复的,则优先考虑使用unique索引,否则使用普通索引

2)查询表是否有索引

show indexs  from   'table表名'

3)删除索引

drop index 索引名 on 表名

删除主键索引

4)、适合使用索引的列:

(1)、较频繁的作为查询条件字段应该创建索引

(2)、唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件(可以理解为在索引创建数据结构时没有唯一的分支)

(3)、更新非常频繁的字段不适合创建索引

(4)、不会出现在where子句中字段不该创建索引

二、mysql事务

1、理解:事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。

mysql数据库控制台事务的几个重要操作

事务细节讨论:

2、事务隔离级别介绍:Mysql隔离级别定义了事务与事务之间的的隔离程度

1):

脏读(dirty read):当一个事务读取另一个事务尚未提交的修改时,产生脏读

不可重复读(nonrepeatable read):同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生不可重复读。

幻读(phantom read):同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻读。

2):查看当前mysql的隔离级别(isolation:隔离)

select    @@tx_isolation

查看系统当前隔离级别

select  @@global.tx_isolation

设置当前会话(连接数据库)的隔离级别:

SET SESSION TRANSACTION  ISOLATION  LEVEL   隔离级别

例:SET SESSION TRANSACTION  ISOLATION  LEVEL   Repeattable read

设置系统当前隔离级别

SET GLOBAL TRANSACTION  ISOLATION  LEVEL   隔离级别

例:SET GLOBAL TRANSACTION  ISOLATION  LEVEL   Repeattable read

mysql事务ACID

三、MySQL表类型和存储引擎

基本介绍:

1. MySQL的表类型由存储引擎(Storage Engines)决定,主要包括MyISAM.
innoDB、Memory等。
2. MySQL 数据表主要支持六种类型,分别是:CSV、Memory.ARCHIVE.
MRG MYISAM、MYISAM、InnoBDB。
3.这六种又分为两类,一类是”事务安全型”(transaction-safe),比如:
InnoDB;其余都属于第二类,称为”非事务安全型"(non-transaction-safe)[mysiam和memory]。

查看所有的存储引擎:

show engines

选择表的存储引擎:

指令修改引擎

ALTER TABLE `t29`  ENGINE=INNDB

四、视图

理解:

1、视图是一个虚拟表,其内容由查询定义。同真实的表一样。视图包含列,其数据来自对应的真实表(基表)

2、视图和基表关系的示意图,视图也有列,数据来自基表

3、通过视图可以修改基表数据,基表也会影响视图的数据

视图的基本使用:

1. create view视图名as select语句

2.alter view视图名as select语句

3. SHOW CREATE VIEW 视图名

4. drop view视图名1视图名2

视图使用的细节:

1、视图创建后,在数据库的对应文件中,只有一个与之对应的视图结构文件

2、视图的数据变化会影响到基表,基表的数据变化也会影响到视图

3、视图中可以再使用视图,数据仍然来自基表

使用视图的三个理由:

1.安全。一些数据表有着重要的信息。有些字段是保密的,不能让用户直接看到。这
时就可以创建一个视图,在这张视图中只保留一部分字段。这样,用户就可以查询自己需要的字段,不能查看保密的字段。
2性能。关系数据库的数据常常会分表存储,使用外键建立这些表的之间关系。这时,
数据库查询通常会用到连接(JOIN)。这样做不但麻烦,效率相对也比较低。如果建立一个视图,将相关的表和字段组合在一起,就可以避免使用JOIN查询数据。
3.灵活。如果系统中有一张旧的表,这张表由于设计的问题,即将被废弃。然而,很
多应用都是基于这张表,不易修改。这时就可以建立一张视图,视图中的数据直接映射到新建的表。这样,就可以少做很多改动,也达到了升级数据表的目的。

五、Mysql管理

mysql中的用户,都存储在系统数据库mysql中 user表中

其中user表的重要字段说明:
1. host:允许登录的“位置”,localhost表示该用户只允许本机登录,也
可以指定ip地址,比如:192.168.1.100
2.user:用户名;
3. authentication string: 密码,是通过mysql的password()函数加密之后的密码

下图中的方法适用于8.0以下版本

8.0以上版本可参考:(要进行修改用户操作,需要有对应的权限才可以)

不同的数据库用户,操作的库和表不同:

给用户授权的基本语法:

回收用户授权:

权限生效指令:

创建用户权限的细节说明:

1.在创建用户的时候,如果不指定Host,则为%,%表示表示所有IP都有连接权限
create user XXX;
2你也可以这样指定
create user 'xxx'@'192.168.1.%’表示 xxx用户在192.168.1.*的ip可以登录mysql
3.在删除用户的时候,如果host 不是%需要明确指定‘用户'@'host值'

索引,事务,存储引擎和选择,视图,mysql管理的更多相关文章

  1. MySQL开发篇,存储引擎的选择真的很重要吗?

    前言 谁说MySQL查询千万级别的数据很拉跨?我今天就要好好的和你拉拉家常,畅谈到深夜,一起过除夕!这篇文章也是年前的最后一篇,希望能带给大家些许收获,不知不觉查找文档和参考实体书籍就写了这么多,自己 ...

  2. Mysql存储引擎及选择方法

    0x00 Mysql数据库常用存储引擎 Mysql数据库是一款开源的数据库,支持多种存储引擎的选择,比如目前最常用的存储引擎有:MyISAM,InnoDB,Memory等. MyISAM存储引擎 My ...

  3. MySQL基础day03 存储引擎和外键MySQL 5.6

    MySQL基础day03_存储引擎和外键-MySQL 5.6 外键的条件: 1,表的存储引擎为innodb存储引擎 2,表中外键字段的类型要与参考表的字段类型一致 3,外键字段要是索引类型中的一种 M ...

  4. MySQL技术内幕InnoDB存储引擎(一)——MySQL体系结构和存储引擎

    1.数据库和实例 数据库(database)和实例(instance)不能混淆. 什么是数据库 数据库是物理操作系统文件或其他文件类型的集合.说白了,就是存储着的文件,不会运行起来,只能被实例增删改查 ...

  5. Learning-MySQL【2】:MySQL存储引擎及数据库的操作管理

    一.存储引擎 存储引擎实际上就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据.存储引擎也可以称为表类型. MySQL提供了插件式(pluggable)的存储引擎,存储引擎是基于表的.同一 ...

  6. MySQL存储引擎及数据库的操作管理

    一.存储引擎 存储引擎实际上就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据.存储引擎也可以称为表类型. MySQL提供了插件式(pluggable)的存储引擎,存储引擎是基于表的.同一 ...

  7. MySQL学习笔记(四):存储引擎的选择

    一:几种常用存储引擎汇总表 二:如何选择 一句话:除非需要InnoDB 不具备的特性,并且没有其他办法替代,否则都应该优先考虑InnoDB:或者,不需要InnoDB的特性,并且其他的引擎更加合适当前情 ...

  8. Mysql存储引擎的选择

    Mysql存储引擎概述 mysql的存储引擎是插件式的,用户可以根据需求选择如何存储和索引数据是否使用事务等. Mysql支持多种存储引擎,用户可以选择不同的引擎来提高应用的效率,灵活的存储方案,存储 ...

  9. MySQL开发篇(4)表类型(存储引擎)的选择

    一.查看支持的存储引擎以及设置修改存储引擎 1.查看默认存储引擎:show variables like '%storage_engine%'; 2.查看当前数据库支持的存储引擎:show ENGIN ...

随机推荐

  1. 关于ActiveMQ+Zookeeper做集群时,解决启动报错:java.io.IOException: com/google/common/util/concurrent/internal/InternalFutureFailureAccess

    这个问题我也是无意间碰到的,之前一直是使用单机的ActiveMQ,所以也没这个问题,但是做集群时碰到这个问题,问题是这样子出现的: 首先,我准备了三台虚拟机,然后使用 Replicated Level ...

  2. MongoDB应用场景及选型

    1. MongoDB数据库定位 * OLTP数据库 * 原则上Oracle和MySQL能做得事情,MongoDB都能做(包括ACID事务) * 优点:横向扩展能力,数据量或并发量增加时候可以自动扩展 ...

  3. hive 之 将excel数据导入hive中 : excel 转 txt

    一.需求: 1.客户每月上传固定格式的excel文件到指定目录.每月上传的文件名只有结尾月份不同,如: 10月文件名:  zhongdiangedan202010.xlsx  , 11月文件名: zh ...

  4. vue3.0 没有 vue.condig.js 解决

    第一次用 vue3.0 ,发现没有vue.config.js  ,只有一个babel.config.js 怎么办? 需要在根目录手动添加一个即可,如下 相关的配置说明 module.exports = ...

  5. [转]webpack——CommonsChunkPlugin

    作用虽然webpack4已经出来很久了,CommonsChunkPlugin也已经舍弃了,但是还是有很多项目是通过webpack3来打包的,对CommonsChunkPlugin各个配置项的认识还是比 ...

  6. PHP靶场-bWAPP环境搭建

    0x00 靶场介绍 bwapp是一款非常好用的漏洞演示平台,包含有100多个漏洞.开源的php应用后台Mysql数据库. 0x01 安装 BWAPP有两种安装方式,一种是单独安装,需部署在Apache ...

  7. 【Java常用类】Instant:瞬时

    Instant:瞬时 时间线上的一个瞬时点. 这可能被用来记录应用程序中的事件时间戳,该类型是面向机器的. now():获取本初子午线对应的标准时间 Instant instant = Instant ...

  8. 【Java】Super

    Super super用于调用父类的属性.方法.构造器,与this相同. super的使用 属性与方法 在子类的方法或构造器中.通过使用"super.属性"或"super ...

  9. winform 中心旋转 图片旋转

    //设置左上角到中心点 g.TranslateTransform(int.Parse(x), int.Parse(y)); //旋转角度 g.RotateTransform(int.Parse(&qu ...

  10. C++中的const和mutable

    1 #include<iostream> 2 using namespace std; 3 //如果在类A的成员函数dis()中想要修改_z,但是不能修改_x,_y怎么办? 4 //如果d ...