mysql执行计划

mysql 详解

懵懂的女人 提交于 2020-01-05 00:11:21
1、简介 MySQL的历史可以追溯到1979年,一个名为Monty Widenius的程序员在为TcX的小公司打工,并且用BASIC设计了一个报表工具,使其可以在4MHz主频和16KB内存的计算机上运行。当时,这只是一个很底层的且仅面向报表的存储引擎,名叫Unireg。【MySQL早期叫Unireg】早期轻量级,后来发展到巨无霸(淘宝、faceboock)MySQL AB是由MySQL创始人和主要开发人创办的公司。MySQL AB最初是由David Axmark、Allan Larsson和Michael“Monty”Widenius在瑞典创办的。 SQL标准:ANSI SQL SQL-86, SQL-89, SQL-92, SQL-99, SQL-03 SQL四种语言:DDL,DML,DCL,TCL DDL(Data Definition Language)数据定义语言 DML(Data Manipulation Language)数据操纵语言 DCL(Data Control Language)数据库控制语言 授权,角色控制等 TCL(Transaction Control Language)事务控制语言 SAVEPOINT 设置保存点 ROLLBACK 回滚 SET TRANSACTION SQL主要分成四部分: (1)数据定义。(SQL DDL)用于定义SQL模式、基本表

DBA学习参考绝佳资料

爱⌒轻易说出口 提交于 2020-01-04 00:14:52
原文来自: pursuer.chen 原文地址:https://www.cnblogs.com/chenmh/default.aspx?page=1 [置顶]MongoDB 文章目录 2018-02-09 10:27 by pursuer.chen, 144 阅读, 收藏 , 编辑 基础: MongoDB入门系列(一):基础概念和安装 MongoDB入门系列(二):Insert、Update、Delete、Drop MongoDB入门系列(三):查询(SELECT) MongoDB入门系列(四):权限管理 MongoDB入门系列(五):聚合操作 MongoDB 错误汇总 MongoDB 启动配置参数 集群: MongoDB 复制机制 MongoDB 搭建可复制群集 MongoDB 副本集管理 MongoDB 搭建分片集群 MongoDB 分片管理 MongoDB 分片键的选择与案例 OPS: 0 Comment [置顶]SQL Server 文章目录 2017-06-02 17:27 by pursuer.chen, 335 阅读, 收藏 , 编辑 SQL Server系列: 高可用方案: 搭建域服务器和DNS 搭建Windows故障转移群集 SQL Server Alwayson概念总结 SQL Server AlwaysOn搭建 SQL Server

MySQl资料链接

你。 提交于 2020-01-04 00:14:40
原文:http://www.uml.org.cn/sjjm/sjjm-MySql.asp MySQl MySQL高可用数据库内核深度优化的四重定制 MySQL数据表存储引擎类型及特性 MySQL分布式数据库高可用架构、复制机制、多机房 Mysql高并发优化 我必须得告诉大家的MySQL优化原理 MySQL注入攻击与防御 腾讯云:MySQL数据库的高可用性分析 一步一步打造MySQL高可用平台 MySQL 日志管理详解 MySQL锁解决并发问题详解 MySQL的配置与管理 MySQL日志管理 MySQL 5.7新特性介绍 MySQL数据库读写分离中间件Atlas 京东MySQL数据库主从切换自动化 全面了解MySql中的事务 MySQL NULL值简介 MySQL备份的持续验证:还原备份 初识MySQL存储过程 优步工程团队对容器化MySQL的应用 MySQL NULL值简介 MySQL备份的持续验证:还原备份 MySQL SQL语句优化技巧 MySQL简单主从方案及暴露的问题 Uber为什么从Postgres迁移到MySQL 一种MySQL到HBase的迁移策略的研究与实现 MySQL 索引详解大全 MYSQL企业常用架构与调优经验分享 SQL优化之六脉神剑 MySQL 大表优化方案探讨 mysql 数据库引擎 MySQL数据库事务隔离级别 MySQL 用户权限详细汇总

mysql架构详解

匆匆过客 提交于 2020-01-03 09:19:16
一、mysql组件 1.mysql对外提供的交互接口(connectors): 编程语言通过connectors组件,比如php,pymysql,JDBC来操作sql 2.管理服务和工具组件(Management Service & Utilities): 提供对mysql的集成管理,比如备份,恢复,等 3.连接池组件(Connection Pool): 负责监听客户端向server的各种请求,每个成功连接的客户端都会分配一个线程负责与server通信 4.sql接口组件(SQL Interface): 接收客户端sql命令,并将结果返回给客户端 5.查询分析器(Parser): 解析sql语法是否正确,不合理则报错 6.优化器组件(Optimizer): 对sql语句按照标准优化分析 7.缓存组件(Caches & Buffers): 缓存缓冲数据 8.插件式存储引擎(Pluggable Storage Engines): mysql是关系型数据库,数据是以表的形式存储的,对于表的创建,数据的存储,更新都是由存储引擎完成的 9.物理文件系统: 真实存储数据表,数据,日志的地方 二、查询流程 1.客户端服务端通信协议: 在任一时刻,要么是服务器向客户端发送数据,要么是客户端向服务器发送数据,这两个动作不能同时发生。一旦一端开始发送消息,另一端要接收完整个消息才能响应它

study Python 14day(mysql学习)

回眸只為那壹抹淺笑 提交于 2020-01-01 17:24:47
倒数第三个员工信息 SELECT * FROM employees ORDER BY hire_date DESC LIMIT 2,1; LIMIT m,n : 表示从第m+1条开始,取n条数据; LIMIT n : 表示从第0条开始,取n条数据,是limit(0,n)的缩写 薪资涨15次以上的 SELECT emp_no, COUNT(emp_no) AS t FROM salaries GROUP BY emp_no HAVING t > 15 去重当前薪资 SELECT DISTINCT salary FROM salaries WHERE to_date = '9999-01-01' ORDER BY salary DESC 不是经理的员工 SELECT emp_no FROM employees WHERE emp_no NOT IN (SELECT emp_no FROM dept_manager) title进行分组,显示大于2的组 SELECT title, COUNT(title) AS t FROM titles GROUP BY title HAVING t >= 2 同上,忽略重复的emp_no SELECT title, COUNT(DISTINCT emp_no) AS t FROM titles GROUP BY title HAVING t >= 2

mysql优化

廉价感情. 提交于 2020-01-01 12:57:29
MySQL逻辑架构(B/S结构) MySQL逻辑架构整体分为三层 : 客户端 : 并非MySQL所独有,诸如 : 连接处理、授权认证、安全等功能均在这一层处理 核心服务 : 包括查询解析、分析、优化、缓存、内置函数(比如 : 时间、数学、加密等函数),所有的跨存储引擎的功能也在这一层实现 : 存储过程、触发器、视图等 存储引擎 : 负责 MySQL 中的数据存储和提取,和 Linux 下的文件系统类似,每种存储引擎都有其优势和劣势,中间的服务层通过 API 与存储引擎通信,这些 API接口 屏蔽不同存储引擎间的差异 具体的逻辑架构如下所示: 我们可以看到和我们的应用架构类似 都有连接池,缓存,内存管理,网络交互,访问控制等 MySQL查询过程 把上面的查询过程结合服务层架构的各个模块来看 MySQL 整个查询执行过程,总的来说分为 5 个步骤 : 1> 客户端向 MySQL 服务器发送一条查询请求,mysql会使用连接池进行连接 2> 服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果,否则进入下一阶段 3> 服务器进行 SQL解析、预处理、再由优化器生成对应的执行计划 4> MySQL 根据执行计划,调用存储引擎的 API来执行查询 5> 将结果返回给客户端,同时缓存查询结果 影响性能的因素: 定位性能问题永远要从宏观层面去查看问题

MySQL数据库(5)- pymysql的使用、索引

眉间皱痕 提交于 2020-01-01 07:27:33
一、pymysql模块的使用 1、pymysql的下载和使用 之前我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在python程序中操作数据库呢?这就需要用到pymysql模块,该模块本质就是一个套接字客户端软件,使用前需要事先安装。 1)pymysql模块的下载 pip3 install pymysql 2)pymysql模块的使用 现有数据库mydb,其中有一个userinfo表,表中数据如下: mysql> select * from userinfo; +----+------+-----+ | id | name | pwd | +----+------+-----+ | 1 | wll | 123 | | 2 | ssx | 456 | +----+------+-----+ 示例:使用Python实现用户登录,如果用户存在则登录成功,否则登录失败 import pymysql username = input('请输入用户名:') pwd = input('请输入密码:') # 1、连接 conn = pymysql.connect( host = '127.0.0.1', port = 3306, user = 'root', password = '123', db = 'mydb', charset = 'utf8' ) # 2

索引原理与慢查询优化(2)

丶灬走出姿态 提交于 2020-01-01 07:27:14
七 正确使用索引 一 索引未命中 并不是说我们创建了索引就一定会加快查询速度,若想利用索引达到预想的提高查询速度的效果,我们在添加索引时,必须遵循以下问题 1 范围问题,或者说条件不明确,条件中出现这些符号或关键字:>、>=、<、<=、!= 、between...and...、like、 大于号、小于号 不等于!= between ...and... like 2 尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0,那可能有人会问,这个比例有什么经验值吗?使用场景不同,这个值也很难确定,一般需要join的字段我们都要求是0.1以上,即平均1条扫描10条记录 #先把表中的索引都删除,让我们专心研究区分度的问题 #先把表中的索引都删除,让我们专心研究区分度的问题 mysql> desc s1; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id

sql优化个人总结(全)

回眸只為那壹抹淺笑 提交于 2020-01-01 07:19:19
sql优化总结--博客 第一次自己写博客,以后要坚持每掌握一个技能点,就要写一篇博客出来,做一个不满足于一个 只会写if...else的程序员。 最近三个月入职了一家新的公司,做的是CRM系统,将公司多个平台的数据同步到CRM,进行 查询,统计和汇总。由于数据量比较庞大,大部分表数据上百万,甚至有的表数据上千万。所以 在系统中做sql优化比较多,特此写一篇博客总结一下关于sql优化方面的经验。 --导致查询缓慢的原因 1、数据量过大 2、表设计不合理 3、sql语句写得不好 4、没有合理使用索引 -- 针对SQL语句的优化 1、查询语句中不要使用 * 2、尽量减少子查询,使用关联查询(left join,right join,inner join)替代 3、减少使用IN或者NOT IN ,使用exists,not exists或者关联查询语句替代 4、or 的查询尽量用 union或者union all 代替 (在确认没有重复数据或者不用剔除重复数据时,union all会更好) 5、合理的增加冗余的字段(减少表的联接查询) 6、增加中间表进行优化(这个主要是在统计报表的场景, 后台开定时任务将数据先统计好,尽量不要在查询的时候去统计) 7、建表的时候能使用数字类型的字段就使用数字类型(type,status...),数字类型的字段作为条件查询比字符串的快 8

mysql索引原理与慢查询优化2

一曲冷凌霜 提交于 2020-01-01 04:56:52
七 正确使用索引 一 索引未命中 并不是说我们创建了索引就一定会加快查询速度,若想利用索引达到预想的提高查询速度的效果,我们在添加索引时,必须遵循以下问题 1 范围问题,或者说条件不明确,条件中出现这些符号或关键字:>、>=、<、<=、!= 、between...and...、like、 大于号、小于号 不等于!= between ...and... like 2 尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0,那可能有人会问,这个比例有什么经验值吗?使用场景不同,这个值也很难确定,一般需要join的字段我们都要求是0.1以上,即平均1条扫描10条记录 #先把表中的索引都删除,让我们专心研究区分度的问题 #先把表中的索引都删除,让我们专心研究区分度的问题 mysql> desc s1; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id