索引,事务,存储引擎和选择,视图,mysql管理

一、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)、添加索引方式

索引,事务,存储引擎和选择,视图,mysql管理

 

 

索引,事务,存储引擎和选择,视图,mysql管理

 

 

 

索引,事务,存储引擎和选择,视图,mysql管理

 

 

 索引,事务,存储引擎和选择,视图,mysql管理

 

 

 如何选择

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

2)查询表是否有索引

show indexs  from   ‘table表名‘

索引,事务,存储引擎和选择,视图,mysql管理

 

 

 

3)删除索引

drop index 索引名 on 表名

索引,事务,存储引擎和选择,视图,mysql管理

 

 

 删除主键索引

索引,事务,存储引擎和选择,视图,mysql管理

 

 

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

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

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

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

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

二、mysql事务

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

索引,事务,存储引擎和选择,视图,mysql管理

 

 

 

mysql数据库控制台事务的几个重要操作索引,事务,存储引擎和选择,视图,mysql管理

 

 

 索引,事务,存储引擎和选择,视图,mysql管理

 

 

 

事务细节讨论:

索引,事务,存储引擎和选择,视图,mysql管理

 

 

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

索引,事务,存储引擎和选择,视图,mysql管理

 

 

 1):

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

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

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

索引,事务,存储引擎和选择,视图,mysql管理

 

 

 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管理

 

 mysql事务ACID

索引,事务,存储引擎和选择,视图,mysql管理

 

 三、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

索引,事务,存储引擎和选择,视图,mysql管理

 

 索引,事务,存储引擎和选择,视图,mysql管理

 

 选择表的存储引擎:

索引,事务,存储引擎和选择,视图,mysql管理

 

 索引,事务,存储引擎和选择,视图,mysql管理

 

指令修改引擎

 ALTER TABLE `t29`  ENGINE=INNDB

四、视图

理解:

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

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

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

索引,事务,存储引擎和选择,视图,mysql管理

 视图的基本使用:

1. create view视图名as select语句

索引,事务,存储引擎和选择,视图,mysql管理

 

 

 

2.alter view视图名as select语句

3. SHOW CREATE VIEW 视图名

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

索引,事务,存储引擎和选择,视图,mysql管理

 

 视图使用的细节:

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

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

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

使用视图的三个理由:

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

五、Mysql管理

 

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

 

索引,事务,存储引擎和选择,视图,mysql管理

 

 

 

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

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

索引,事务,存储引擎和选择,视图,mysql管理

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

索引,事务,存储引擎和选择,视图,mysql管理

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

索引,事务,存储引擎和选择,视图,mysql管理

 

 给用户授权的基本语法:

索引,事务,存储引擎和选择,视图,mysql管理

 

回收用户授权:

索引,事务,存储引擎和选择,视图,mysql管理

 

 权限生效指令:

索引,事务,存储引擎和选择,视图,mysql管理

 

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

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

 

索引,事务,存储引擎和选择,视图,mysql管理

上一篇:js对DOM树的阻塞*


下一篇:使用Xtrabackup对数据库进行部分备份恢复