一、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. Location配置项及LNMP架构

    目录 Location配置项及LNMP架构 Location location匹配符号 LNMP架构 UWSGI uwsgi服务部署 部署BBS项目 步骤 Location配置项及LNMP架构 Loc ...

  2. Python + Selenium 上传元素为button类型的文件的解决办法

    工具:winspy Python所需安装模块:pywin32 (安装语句:pip install -i https://pypi.douban.com/simple pywin32) 元素位置: 对应 ...

  3. Pytest_测试用例的执行方式(2)

    在pytest框架中,编写测试用例有如下约束: 所有的测试用例文件名都需要满足test_*.py格式或*_test.py格式. 在测试用例文件中,测试类以Test开头,并且不能带有__init__方法 ...

  4. [flask] jinja自定义filter来过滤html标签

    问题描述 数据库存储了html格式的博客文章,在主页(index)显示的时候带有html标签,如何过滤掉呢? 解决方案 用jinja自定义filter过滤掉html标签 我是用的工厂函数,因此在工厂函 ...

  5. Go语言系列- Socket编程和Redis

    Socket编程 一.socket编程概述 什么是socket编程? socket编程是计算机PC机器上2个程序通过一个双向的通信连接实现数据的交互,这个连接的一端就是一个socket.socket的 ...

  6. 基于CentOS6.5-Hadoop2.7.3-hive-2.1.1安装sqoop1.4.7

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6627736198431375879/ 系统版本,Hadoop已安装完成.链接<CentOS6.5下安装Had ...

  7. go包管理速通,一篇文章就够了,再也不用担心因为不会导包被辞退

    前言 最近在看一些go语言相关的书,发现了一个有意思的事情:其中一本书最新印刷的版本是2017年3月,而golang包管理的后起之秀go module伴随go1.11于2018年8月诞生--因此,书里 ...

  8. golang中goroutine

    1. 概念 goroutine 奉行通过通信来共享内存,而不是共享内存来通信 goroutine 是由go的运行时(runtime)调度和管理的 go程序会智能的将goroutine中的任务合理的分配 ...

  9. CSS之 sass、less、stylus 预处理器的使用方式

    更详细区别参考文档:https://blog.csdn.net/pedrojuliet/article/details/72887490 使用变量: sass:  使用 $ 符号定义变量,如: $ba ...

  10. Ubuntu Typora安装

    Ubuntn Typora安装 现在好像开始收费了,网上给的方法都是从官网下载的,感觉迟早不能用,因为要钱了 官网好像给的安装方法如下,可是好像不太好用 # or run: # sudo apt-ke ...