mysql创建索引

MySQL快速入门(三)

我的梦境 提交于 2019-12-30 00:16:15
1. 性能优化 1.1 MySQL索引 什么是索引? 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含 着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录, 能加快数据库的查询速度。 索引分类: ①单列索引:一个索引只包含单个列,一个表可以有多个单列索引 ②组合索引:一个索引包含多个列 索引的使用 创建索引 create index indecName on tableName(userName(length))’ 修改索引 alter table tableName add index indexName(columnName) 删除索引 drop index indexName on tableName 1.2 explain 命令 explain命令介绍 explain命令显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句,使用方法在select语句前加上explain就可以了. 示例: Mysql执行计划的图解: 1.3 慢查询 1. 什么是慢查询? MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句。具体环境中,运行时间超过long_query_time值的SQL语句,则会被记录到慢查询日志 中

MySQL性能优化方案

对着背影说爱祢 提交于 2019-12-29 21:39:32
欢迎访问我的个人博客:www.ifueen.com MySql性能优化策略 文章目录 MySql性能优化策略 关系型数据库的优化方案 定位慢查询 找出执行效率慢的SQL(定位慢SQL) 开启慢查询记录日志 分析Sql语句 单机优化 通过表结构设计 数据库设计三范式 存储引擎 Innodb和MyISAM的区别 索引 索引分类 复合索引使用事项: 分表 垂直分表 水平分表 SQL语句优化 DDL优化 DML优化 DQL优化 关系型数据库的优化方案 关于MySQL的优化,大体方案可以分为以下步骤 找出执行效率低的Sql 分析慢的Sql 进行优化 定位慢查询 找出执行效率慢的SQL(定位慢SQL) 首先要明白原理,实际上我们在数据库上面所做的操作都会被日志记录下来,我们在定位慢查询就需要去通过日志记录来找到到底是哪条SQL效率慢 查询数据库状态的命令 运行了多久 show status like 'uptime' ; CRUD的执行次数 show status like '%Com_select%' show status like '%Com_insert%' show status like '%Com_update%' show status like '%Com_delete%' 查询所有的连接数 show status like 'connections' 查询慢查询次数 (

MySQL/Oracle索引的创建与使用

空扰寡人 提交于 2019-12-29 18:09:39
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。 索引分 单列索引 和 组合索引 。 单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。 组合索引,即一个索引包含多个列。 创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件( 一般作为 WHERE 子句的条件 )。 索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低 更新表的速度 ,如对表进行 INSERT、UPDATE和DELETE 。因为更新表时, MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。 创建索引 CREATE INDEX indexName ON TABLENAME(username(length)); 创建表的时候直接指定 CREATE TABLE TABLENAME( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) ); 删除索引的语法 DROP INDEX [indexName] ON TABLENAME; 唯一索引 它与前面的普通索引类似,不同的就是: 索引列的值必须唯一,但允许有空值 。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式: CREATE

Mysql架构和索引及性能优化

自古美人都是妖i 提交于 2019-12-28 21:37:17
第3章 Mysql架构和索引及性能优化 3.1 Mysql架构 1.逻辑架构图一: 2.逻辑架构图二: 3.执行流程图: 3.2 存储引擎介绍: * 多存储引擎是 mysql有别于其他数据库的一大特性; * 存储引擎是针对表的 * MySQL 5.5之后, 默认的存储引擎由 MyISAM变为 InnoDB 。 * 查看存储引擎 : show engines; Innodb Myisam 存储文件 .frm 表定义文件 .ibd 数据文件 .frm 表定义文件 .myd 数据文件 .myi 索引文件 锁 表锁、行锁 表锁 事务 ACID 不支持 CRDU 读、写 读多 count 扫表 专门存储的地方 索引结构 B+ Tree B+ Tree 3.1 索引的存储结构: B Tree和B+ Tree的特点与区别 * 树的高度一般都是在 2-4这个高度, 树的高度直接影响 IO读写的次数。 * 如果是三层树结构 ---支撑的数据可以达到20G,如果是四层树结构---支撑的数据可以达到几十T * B Tree和B+ Tree的最大区别在于非叶子节点是否存储数据的问题。B Tree是非叶子节点和叶子节点都会存储数据。 而 B+ Tree只有叶子节点才会存储数据,而且存储的数据都是在一行上,而且这些数据都是有指针指向的,也就是由顺序的。 非聚集索引 * 叶子节点只会存储数据行的指针

MySQL入门(二)

故事扮演 提交于 2019-12-27 23:44:18
1. MySQL 架构 1.1 逻辑架构图 1.1.1 Connection Pool: 连接池 * 管理缓冲 用户连接 , 线程处理 等需要缓存的需求。 * 负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到 线程管理模块 。每一个连接上 MySQL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。 * 而 连接线程 的主要工作就是负责 MySQL Server 与客户端的通信,接受客户端的命令请求,传递 Server 端的结果信息等。线程管理模块则负责管理维护这些连接线程。包括线程的创建,线程的 cache 等。 1.1.2 Parser: 解析器 * SQL 命令传递到解析器的时候会被解析器 验证和解析 。 主要功能: a . 将 SQL 语句进行 语义和语法的分析,分解成数据结构 ,然后按照 不同的操作类型进行分类, 然后做出针对性的转发到后续步骤,以后 SQL 语句的传递和处理就是基于这个结构的。 b. 如果在分解构成中遇到错误,那么就说明这个 sql 语句是不合理的 1.1.3 Optimizer: 查询优化器 * SQL 语句在查询之前会 使用查询优化器对查询进行优化 。 * 它使用的是“ 选取 - 投影 - 联接 ”策略进行查询。 用一个例子就可以理解: select uid,name from user

通过查看mysql 配置参数、状态来优化你的mysql

邮差的信 提交于 2019-12-27 18:24:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> mysql的监控方法大致分为两类: 1.连接到mysql数据库内部,使用show status,show variables,flush status 来查看mysql的各种性能指标。 2. 直接使用mysqladmin查看其性能指标,例如: UserParameter=mysql.uptime,mysqladmin -uroot status|cut -f2 -d":"|cut -f1 -d"T" mysqladmin两个参数,status,extended-status shell > mysqladmin -uroot -ppassword variables status 可得到以下信息(后面详解) -------------------------------------------------------------------------------------------------------------------------- Uptime: 4557887 #mysql运行的秒数 Threads: 1 #连接数 Questions: 1684130 #The number of questions (queries) from clients since the server was

MySQL基础篇(02):从五个维度出发,审视表结构设计

断了今生、忘了曾经 提交于 2019-12-27 18:08:31
本文源码: GitHub·点这里 || GitEE·点这里 一、数据场景 1、表结构简介 任何工具类的东西都是为了解决某个场景下的问题,比如Redis缓存系统热点数据,ClickHouse解决海量数据的实时分析,MySQL关系型数据库存储结构化数据。数据的存储则需要设计对应的表结构,清楚的表结构,有助于快速开发业务,和理解系统。表结构的设计通常从下面几个方面考虑:业务场景、设计规范、表结构、字段属性、数据管理。 2、用户场景 例如存储用户基础信息数据,通常都会下面几个相关表结构:用户信息表、单点登录表、状态管理表、支付账户表等。 用户信息表 存储用户三要素相关信息:姓名,手机号,身份证,登录密码,邮箱等。 CREATE TABLE `ms_user_center` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `user_name` varchar(20) NOT NULL COMMENT '用户名', `real_name` varchar(20) DEFAULT NULL COMMENT '真实姓名', `pass_word` varchar(32) NOT NULL COMMENT '密码', `phone` varchar(20) NOT NULL COMMENT '手机号', `email` varchar

mysql存储引擎

独自空忆成欢 提交于 2019-12-26 10:46:35
数据库存储引擎 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据 。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。 因为在关系数据库中数据的存储是以表的形式存储的,所以 存储引擎也可以称为表类型(Table Type,即存储和操作此表的类型)。 如创建一个InnoDB类型的表: CREATE TABLE `brand` ( `id` int(11) NOT NULL AUTO_INCREMENT, `brand_name` varchar(64) NOT NULL, `brand_logo` varchar(255) NOT NULL, `description` varchar(255) NOT NULL, `parent_id` int(11) NOT NULL, `layer` int(11) NOT NULL DEFAULT '0', `enabled` int(11) NOT NULL DEFAULT '0', `path` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `brand_name` (`brand_name`) )

mysql 监控及优化——转载自http://www.cnblogs.com/suansuan/

孤者浪人 提交于 2019-12-26 08:14:43
1、Mysql连接数   Mysql默认最大连接数为100。   设置Mysql的最大连接数,在Mysql的配置文件中增加:   max_connections = 1000               #Mysql的最大连接数,默认如果不写的话是100个   wait_timeout = 10               #超时时间   配置文件路径:    (/etc/my.cnf 系统自带) (/opt/lampp/etc/my.cnf 安装Mysql 路径)   查看当前有多少个连接   show status like '%Threads_connected%';  #查看当前连接数   show processlist;            #也可查看锁表 2、Mysql缓存   Query Cache缓存的是sql语句对应的结果集,InnoDB_Buffer_Pool中缓存的是表中的数据。Buffer_Pool是设置的越大越好,一般设置为服务器物理内存的70%。   缓存1(MySQL层):查询缓存 Query Cache     ①.查询表里的数据有变化,之前的缓存失效。     ②.查询语句必须一模一样,才能用查询缓存;只要字符大小写或者注释等有一点点不同,都不可以用查询缓存。     ③.任何一个包含不确定的函数(比如now(),current_date()

【面试】MySQL的事务和索引

徘徊边缘 提交于 2019-12-26 05:17:44
MySQL事务 MySQL事务主要用于处理操作量大,复杂度高的数据。 比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这些数据库操作语句就构成一个事务。 (1)在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务。 (2)事务处理可以用来维护数据库的完整性,保证成批的sql语句要么全部执行,要么全部不执行。 (3)事务用来管理insert,update,delete语句。 一般来说,事务必须满足4个条件(ACID):Atomicity(原子性)、Consisttency(稳定性)、Isolation(隔离性)、Durability(可靠性)。 (1)事务的原子性:一组事务,要么成功,要么撤回。 (2)事务的稳定性:有非法数据(外键约束之类的),事务撤回。 (3)事务的隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,要么其他事务会撤回。事务的100%的隔离,需要牺牲速度。 (4)事务的可靠性:软、硬件崩溃后,InnoDB数据库驱动会利用日志文件重构修改,可靠性和高速度不可兼得,innodb_flush_log_at_trx_commit选项,决定什么时候把事务保存到日志里。 在MySQL控制台使用事务来操作: (1)开始一个事务 start transaction (2)做保存点