MySQL高级知识系列目录】的更多相关文章

MySQL高级知识(一)——基础 MySQL高级知识(二)——Join查询 MySQL高级知识(三)——索引 MySQL高级知识(四)——Explain MySQL高级知识(五)——索引分析 MySQL高级知识(六)——索引优化 MySQL高级知识(七)——索引面试题分析 MySQL高级知识(八)——ORDER BY优化 MySQL高级知识(九)——慢查询日志 MySQL高级知识(十)——批量插入数据脚本 MySQL高级知识(十一)——Show Profile MySQL高级知识(十二)——全局…
前言:本来小表驱动大表的知识应该在前面就讲解的,但是由于之前并没有学习数据批量插入,因此将其放在这里.在查询的优化中永远小表驱动大表. 1.为什么要小表驱动大表呢 类似循环嵌套 for(int i=5;.......) { for(int j=1000;......) {} } 如果小的循环在外层,对于数据库连接来说就只连接5次,进行5000次操作,如果1000在外,则需要进行1000次数据库连接,从而浪费资源,增加消耗.这就是为什么要小表驱动大表. 2.数据准备 根据MySQL高级知识(十)—…
前言:本章主要讲解MySQL主从复制的操作步骤.由于环境限制,主机使用Windows环境,从机使用用Linux环境.另外MySQL的版本最好一致,笔者采用的MySQL5.7.22版本,具体安装过程请查询相关资料. 1.主从复制的基本原理 slave会从master读取binlog来进行数据同步.主要有以下三个步骤: ①master将改变记录到二进制日志(binary log),这些记录过程叫做二进制日志事件(binary log events). ②slave将master的binary log…
前言:前面学习了表锁的相关知识,本篇主要介绍行锁的相关知识.行锁偏向InnoDB存储引擎,开销大,加锁慢,会出现死锁,锁定粒度小,发生锁冲突的概率低,但并发度高. 0.准备 #1.创建相关测试表tb_innodb_lock,注意数据库引擎为InnoDB. drop table if exists test_innodb_lock; CREATE TABLE test_innodb_lock ( a ), b ) ) ENGINE INNODB DEFAULT charset = utf8; ,'…
前言:锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算机资源(如CPU.RAM.I/O等)的争用外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据并发访问性能的一个重要因素.从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂. 1.锁的分类 #1.从对数据操作的类型来分 读锁(共享锁)和写锁(排它锁) #2.从对数据操作的粒度来分 表锁和行锁 2.表锁(偏读) 特点:偏向MyISAM存储引擎…
前言:全局查询日志用于保存所有的sql执行记录,该功能主要用于测试环境,在生产环境中永远不要开启该功能. 1.如何开启 #1.通过my.cnf配置开启该功能. 注:对my.cnf文件配置后,需重启mysql. ①通过命令查看全局查询日志是否开启成功. ②查看全log_globalquery.log文件中的内容. 该log文件记录执行过的sql语句. #2.通过命令开启该功能. 通过以上配置,执行过的sql语句将会记录到mysql库中general_log表里. 2.总结 ①通过命令方式开启该功能…
前言:Show Profile是mysql提供的可以用来分析当前会话中sql语句执行的资源消耗情况的工具,可用于sql调优的测量.默认情况下处于关闭状态,并保存最近15次的运行结果. 1.分析步骤 #1.开启Show Profile功能,默认该功能是关闭的,使用前需开启. #2.根据MySQL高级知识(十)——批量插入数据脚本中的数据脚本向tb_emp_bigdata表中插入50w条数据.然后执行如下查询语句: limit ; ; #3.通过show profiles查看结果. #4.使用sho…
前言:使用脚本进行大数据量的批量插入,对特定情况下测试数据集的建立非常有用. 0.准备 #1.创建tb_dept_bigdata(部门表). create table tb_dept_bigdata( id int unsigned primary key auto_increment, deptno mediumint unsigned , dname ) not null default '', loc ) not null default '' )engine=innodb default…
前言:慢查询日志是MySQL提供的一种日志记录,它记录MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的sql语句,该sql语句会被记录到慢查询日志中.慢查询日志主要与explain进行联合分析. 1.如何开启慢查询日志 默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数.如果不是调优需要,一般不建议开启该参数,因为开启慢查询日志或多或少会带来一定的性能影响. #1.首先查看慢查询日志是否开启. 注:Value为OFF表示关闭,笔者已…
前言:在使用order by时,经常出现Using filesort,因此对于此类sql语句需尽力优化,使其尽量使用Using index. 0.准备 #1.创建test表. drop table if exists test; create table test( id int primary key auto_increment, c1 ), c2 ), c3 ), c4 ), c5 ) ) ENGINE=INNODB default CHARSET=utf8; insert into te…
前言:该篇随笔通过一些案例,对索引相关的面试题进行分析. 0.准备 #1.创建test表(测试表). drop table if exists test; create table test( id int primary key auto_increment, c1 ), c2 ), c3 ), c4 ), c5 ) ) ENGINE=INNODB default CHARSET=utf8; insert into test(c1,c2,c3,c4,c5) values('a1','a2','…
前言:索引优化的目的主要是让索引不失效,本篇通过相关案例对索引优化进行讲解. 0.准备 创建经典的tb_emp表. DROP TABLE IF EXISTS `tb_emp`; CREATE TABLE `tb_emp` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, `age` ) NOT NULL, ) NOT NULL, email varchar(20), PRIMARY KEY (`id`) ) ENGINE=InnoDB DE…
前言:前面已经学习了explain(执行计划)的相关知识,这里利用explain对索引进行优化分析. 0.准备 首先创建三张表:tb_emp(职工表).tb_dept(部门表)和tb_desc(描述表) 1)tb_emp表. DROP TABLE IF EXISTS `tb_emp`; CREATE TABLE `tb_emp` ( `id` ) NOT NULL AUTO_INCREMENT, `username` ) NOT NULL, `deptid` int(11) NOT NULL,…
前言:explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句.explain主要用于分析查询语句或表结构的性能瓶颈. 注:本系列随笔如无特殊说明都MySQL版本都为5.7.22. 1.explain的作用 通过explain+sql语句可以知道如下内容: ①表的读取顺序.(对应id) ②数据读取操作的操作类型.(对应select_type) ③哪些索引可以使用.(对应possible_keys) ④哪些索引被实际使用.(对应k…
前言:索引在sql调优部分占据着重要的位置,了解并深入索引对我们来说也是非常重要的.本篇主要介绍MySQL中索引的相关知识点. 1.索引是什么 MySQL官方对索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构.因此索引的本质就是数据结构.索引的目的在于提高查询效率,可类比字典.书籍的目录等这种形式. 可简单理解为“排好序的快速查找数据结构”.在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构上实现高级查找算法,这…
前言:该篇主要对MySQL中join语句的七种情况进行总结. 0.准备 join主要根据两表或多表之间列的关系,从这些表中进行数据的查询. 首先创建两张表:tb_emp(员工表)和tb_dept(部门表),并插入相关测试数据. 1.tb_emp表. DROP TABLE IF EXISTS `tb_emp`; CREATE TABLE `tb_emp` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, `deptid` ) NOT NULL…
前言:MySQL高级知识主要来自尚硅谷中MySQL的视频资源.对于网上视频资源来说,尚硅谷是一个非常好的选择.通过对相应部分的学习,笔者可以说收益颇丰,非常感谢尚硅谷. 1.关于MySQL的一些文件 MySQL如何安装.如何配置自启动,这里不进行讲述,可自行搜索相关安装教程进行处理.这里主要介绍MySQL的主要配置文件. ①二进制日志log-bin:用于主从复制. ②错误日志log-error:默认关闭,记录严重的警告和错误信息,每次启动和关闭的详细信息等. ③查询日志show-log:默认关闭…
<Mysql高级知识>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201756.html 文章 MySQL数据库InnoDB引擎主从复制同步经验总结 Linux下自动备份MySQL的方法 php在linux下检测mysql同步状态的方法 MySQL集群简介与配置详解 淘宝内部分享:怎么跳出MySQL的10个大坑 淘宝内部分享:MySQL & MariaDB性能优化 8种MySQL分页方法总结 101个MySQL调试和优化技巧…
MySQL高性能优化系列-目录 (1)Mysql高性能优化规范建议 (2)电商数据库表设计 (3)MySQL分区表使用方法 (4)MySQL执行计划分析 (5)电商场景下的常见业务SQL处理 (6)MySQL慢查询日志的使用 (7)MySQL数据库备份详解 (8)MySQL主从复制架构使用方法 (9)MySQL主主复制架构使用方法 (10)如何MySQL读压力大的问题…
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性. Mysql是开源的,所以你不需要支付额外的费用. Mysql支持大型的数据库.可以处理拥有上千万条记录的大型数据库. MySQL使用标准的SQL数据语言形式. Mysql可以允许于多个系统上,并且支持多种语言.这些编程语言包括C.C+…
Java对目录操作的许多方法与上一篇文件操作的方法很多是一样的. java.io.File file = new File( "D:\1\2\3\4"); 1.递归创建目录 file.mkdirs(); 2.删除目录 file.isDirectory(); //判读是否目录 file.list(); //返回没有完整目录的文件名 file.delete(); //删除 3.是否为空 file.list() > 0 //目录不为空 file.getPath(); //目录路径 4.…
2 数据约束 2.1什么数据约束 ​ 对用户操作表的数据进行约束 2.2 默认值 作用: 当用户对使用默认值的字段不插入值的时候,就使用默认值. 注意: 1)对默认值字段插入null是可以的. 2)对默认值字段可以插入非null -- 1.1 默认值 CREATE TABLE student( id INT, NAME VARCHAR(20), address VARCHAR(20) DEFAULT '广州天河' -- 默认值 ) DROP TABLE student; -- 当字段没有插入值的…
MySQL高级 知识拓展 MySQL高级 知识拓展 数据量 和 B+树 的关系 事务隔离级别集底层原理MVCC 唯一索引和普通索引的关键不同点 MRR:multi range read 练习和总结…
MySQL高级SQL语句 目录 MySQL高级SQL语句 创建两个表 SELECT DISTINCT WHERE AND OR IN BETWEEN 通配符 LIKE ORDER BY 函数 数学函数 聚合函数 字符串函数 GROUP BY HAVING 别名 子查询 EXISTS 表连接的方式 表的自我连接 CREATE VIEW UNION 交集值 无交集值 CASE 空值 正则表达式 存储过程 存储过程的优点: 创建存储过程 查看存储过程 存储过程的参数 删除存储过程 存储过程的控制语句…
本篇 主要介绍MySQL的高级知识---视图.事件.索引等相关知识: 一.视图 在学习视图时我们需要什么是视图,视图有哪些好处以及视图的相关操作: 1.1  什么是视图? 关于视图通俗来讲就是一条select语句查询的结果集,本质而言就是一张虚表,与我们常说的快捷方式或者说软连接十分相似,它不存储具体的数据,而若基本表数据发生了改变,视图也会跟着改变. 1.2  视图的作用: 视图是一条select语句的结果集,故: 1.提高了重用性,类似一个函数,让我们想查询某些数据时,不需要每次敲复杂的se…
    深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富   一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1中相关数).1)数据存取子系统,2)事务子系统,3)锁子系统,4)内存池管理子系统,5)日志子系统. 在一个应用程序中,并不一定须要全然具备这5大子系统. 假设程序仅仅使用了数据存取子系统,它的体系结构如图1.2.在图1.2中,我们仅仅使了两个子系统:数据存取以及内存池子系统.(备注:另外三个子系统…
    深入了解mysql它BDB系列(1) ---BDB关基础知识 作者:杨万富   一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的.包括五个子系统(见图1.1中相关数). 1)数据存取子系统,2)事务子系统,3)锁子系统,4)内存池管理子系统,5)日志子系统. 在一个应用程序中.并不一定须要全然具备这5大子系统. 假设程序仅仅使用了数据存取子系统,它的体系结构如图1.2. 在图1.2中.我们仅仅使了两个子系统:数据存取以及内存池子系统.(备注:另外三个子系…
随笔分类 - mysql 进阶篇系列 mysql 开发进阶篇系列 55 权限与安全(安全事项 ) 摘要: 一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限,在安装mysql时就要重视安全问题. (1) 锁定mysql用户. (2) 其它任何用户都采取独立的阅读全文 posted @ 2018-10-23 17:46 花阴偷移 阅读(266) | 评…
随笔分类 - mysql 架构篇系列 mysql 架构篇系列 4 复制架构一主一从搭建(半同步复制) 摘要: 一.概述 在mysql 5.5之前,mysql 的复制是异步操作,主库和从库的数据之间存在一定的延时,这样存在一个隐患:当主库上写入一个事务并提交成功,而从库尚未得到主库推送的Binlog日志时,主库down机了,事务Binlog丢失了,此时从库就缺失了这个事务,从而造成主从不一致. 为了解决这个问阅读全文 posted @ 2018-11-09 17:41 花阴偷移 阅读(260) |…
随笔分类 - mysql 基础篇系列 mysql 开发基础系列22 SQL Model(带迁移事项) 摘要: 一.概述 与其它数据库不同,mysql 可以运行不同的sql model 下, sql model 定义了mysql应用支持的sql语法,数据校验等,这样更容易在不同的环境中使用mysql. sql model 常用来解决下面几类问题: (1) 通过设置sql mode, 可以完成不同严格程度的数据阅读全文 posted @ 2018-07-16 18:06 花阴偷移 阅读(429) |…