一、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. Ranger开源贡献统计

    统计一下自己在Ranger开源社区贡献的Issue数量, 开源社区的Issue主要分为New Feature,Bug,Improvement, 这三种都是和代码相关的,会直接修改开源项目的代码库, 还 ...

  2. Spring Cloud Eureka源码分析之心跳续约及自我保护机制

    Eureka-Server是如何判断一个服务不可用的? Eureka是通过心跳续约的方式来检查各个服务提供者的健康状态. 实际上,在判断服务不可用这个部分,会分为两块逻辑. Eureka-Server ...

  3. String 既然能做性能调优,我直呼内行

    码哥,String 还能优化啥?你是不是框我? 莫慌,今天给大家见识一下不一样的 String,从根上拿捏直达 G 点. 并且码哥分享一个例子:通过性能调优我们能实现百兆内存轻松存储几十 G 数据. ...

  4. 在quasar 注册全局filter

    A common use case for Quasar applications is to run code before the root Vue app instance is instant ...

  5. Maven+ajax+SSM实现编辑修改

    转载自:https://www.cnblogs.com/kebibuluan/p/9017754.html 3.尚硅谷_SSM高级整合_使用ajax操作实现修改员工的功能 当我们点击编辑案例的时候,我 ...

  6. TestNG中 ITestListener 的使用

    1.关于testng中ITestListener 的相关介绍文档,请参考: http://javadox.com/org.testng/testng/6.8.7/org/testng/ITestLis ...

  7. [Android测试] Appium的一些坑问题错误解决 与 技巧集锦

    转:https://blog.csdn.net/niubitianping/article/details/52624417 1. error: Failed to start an Appium s ...

  8. fluem读取文件并写入到hadoop的hdfs

    接上一章,本章介绍使用 crontab 像指定文件定时写入,使用fluem 读取并写入到hadoop的hdfs 前提准备已安装好fluem ,和hadoop(推荐单机即可毕竟做实验) 一.进入终端执行 ...

  9. linux简单命令汇总

    ls [选项] [文件或目录] -a 显示所有文件,包括隐藏文件 -l 显示详细信息 -d 查看目录属性 -h 人性化显示文件大小 -i 显示inode mkdir [选项] 目录名 -p 递归创建 ...

  10. Linux下Redis 6.2.6安装和部署详细图文步骤

    Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的 ...