MySQL
文章平均质量分 73
学习资源参考:https://www.bilibili.com/video/BV12b411K7Zu
http://yun.itheima.com/course/579.html?capid=1
Java追求者
坚持每天学习!
展开
-
MySQL高级之主从复制
1. 复制概述复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。2. 复制原理MySQL 的主从复制原理如下。从上层来看,复制分成三步:Master 主库在事务提交时,会把数据变更作为时间 Events 记录在二进制日志文件 Binlog 中。主库推送二进制日志文件 Binlog 中原创 2021-06-27 15:34:52 · 131 阅读 · 0 评论 -
MySQL高级之日志
1. MySQL日志在任何一种数据库中,都会有各种各样的日志,记录着数据库工作的方方面面,以帮助数据库管理员追踪数据库曾经发生过的各种事件。MySQL 也不例外,在 MySQL 中,有 4 种不同的日志,分别是错误日志、二进制日志(BINLOG 日志)、查询日志和慢查询日志,这些日志记录着数据库在不同方面的踪迹。2. 错误日志错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,可原创 2021-06-25 22:02:19 · 230 阅读 · 1 评论 -
MySQL高级之常用指令
导出整个数据库表mysqldump -uroot -p123456 demo_03 > demo_03.sql导出指定数据库表mysqldump -uroot -p123456 demo_03 tb_user > tb_user.sql原创 2021-06-23 19:18:50 · 108 阅读 · 0 评论 -
MySQL高级之常用SQL技巧
1. SQL执行顺序编写顺序SELECT DISTINCT <select list>FROM <left_table> <join_type>JOIN <right_table> ON <join_condition>WHERE <where_condition>GROUP BY <group_by_list>HAVING <having_condition>ORDER BY &l原创 2021-06-21 11:11:10 · 113 阅读 · 0 评论 -
MySQL高级之锁
1. 锁概述锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢)。在数据库中,除传统的计算资源(如 CPU、RAM、I/O 等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。2. 锁可以来干嘛?可以解决大量访问数据造成的并发问题3. 锁分类从对数据操作的粒度分 :1) 表锁:操作时,会锁定整个表。2) 行锁:原创 2021-06-21 10:56:48 · 120 阅读 · 0 评论 -
MySQL高级之并发参数调整
1. 概述从实现上来说,MySQL Server 是多线程结构,包括后台线程和客户服务线程。多线程可以有效利用服务器资源,提高数据库的并发性能。在Mysql中,控制并发连接和线程的主要参数包括 max_connections、back_log、thread_cache_size、table_open_cahce。2. max_connections(最大连接数)采用max_connections 控制允许连接到MySQL数据库的最大数量,默认值是 151。如果状态变量 connection_error转载 2021-06-20 09:03:14 · 157 阅读 · 0 评论 -
MySQL高级之内存管理及存储引擎优化
1. 内存优化原则1) 将尽量多的内存分配给MySQL做缓存,但要给操作系统和其他程序预留足够内存。2) MyISAM 存储引擎的数据文件读取依赖于操作系统自身的IO缓存,因此,如果有MyISAM表,就要预留更多的内存给操作系统做IO缓存。3) 排序区、连接区等缓存是分配给每个数据库会话(session)专用的,其默认值的设置要根据最大连接数合理分配,如果设置太大,不但浪费资源,而且在并发连接较高时会导致物理内存耗尽。2. MyISAM 内存优化myisam存储引擎使用 key_buffer 缓存原创 2021-06-20 08:48:49 · 154 阅读 · 0 评论 -
MySQL高级之查询缓存优化
1. 概述开启Mysql的查询缓存,当执行完全相同的SQL语句的时候,服务器就会直接从缓存中读取结果,当数据被修改,之前的缓存会失效,修改比较频繁的表不适合做查询缓存。2. 操作流程客户端发送一条查询给服务器;服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果。否则进入下一阶段;服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划;MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询;将结果返回给客户端。3. 查询缓存配置3.1 查看数据库是否原创 2021-06-20 08:29:26 · 178 阅读 · 0 评论 -
MySQL高级之应用优化
1. 应用优化在实际生产环境中,由于数据库本身的性能局限,就必须要对前台的应用进行一些优化,来降低数据库的访问压力。2. 使用数据库连接池对于访问数据库来说,建立连接的代价是比较昂贵的,因为我们频繁的创建关闭连接,是比较耗费资源的,我们有必要建立 数据库连接池,以提高访问的性能。3. 减少对MySQL的访问3.1 避免对数据进行重复检索在编写应用代码时,需要能够理清对数据库的访问逻辑。能够一次连接就获取到结果的,就不用两次连接,这样可以大大减少对数据库无用的重复请求。比如 ,需要获取书籍的id原创 2021-06-19 22:41:28 · 116 阅读 · 0 评论 -
MySQL高级之SQL优化
1. SQL优化1.1 大批量插入数据环境准备 :CREATE TABLE `tb_user_1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(45) NOT NULL, `password` varchar(96) NOT NULL, `name` varchar(45) NOT NULL, `birthday` datetime DEFAULT NULL, `sex` char(1) DEFAULT原创 2021-06-19 22:29:30 · 308 阅读 · 0 评论 -
MySQL高级之如何正确的使用索引
1. 索引的使用索引是数据库优化最常用也是最重要的手段之一, 通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题。1.1 验证索引提升查询效率在我们准备的表结构tb_item 中, 一共存储了 300 万记录;A. 根据ID查询select * from tb_item where id = 1999\G;查询速度很快, 接近0s , 主要的原因是因为id为主键, 有索引;B. 根据 title 进行精确查询select * from tb_item where title原创 2021-06-19 15:28:04 · 272 阅读 · 0 评论 -
MySQL高级之SQL性能分析
1. SQL优化步骤原创 2021-06-19 00:45:01 · 457 阅读 · 0 评论 -
MySQL高级之存储引擎
1. 存储引擎概述和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎。 存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式 。存储引擎是基于表的,而不是基于库的。所以存储引擎也可被称为表类型。 Oracle,SqlServer等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应引擎,或者编写存储引擎。 MySQL5.0支持的存储引擎包含 : InnoDB 、MyISA转载 2021-06-17 23:52:13 · 132 阅读 · 0 评论 -
MySQL高级之体系结构
1. MySQL的体系结构概览整个MySQL Server由以下组成Connection Pool : 连接池组件Management Services & Utilities : 管理服务和工具组件SQL Interface : SQL接口组件Parser : 查询分析器组件(解析器)Optimizer : 优化器组件Caches & Buffers : 缓冲池组件Pluggable Storage Engines : 存储引擎File System : 文件系统原创 2021-06-17 19:00:40 · 117 阅读 · 0 评论 -
MySQL高级之索引
1. 索引概述MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。如下面的示意图所示 :总的来说:索引是一种数据结构索引的作用是高效的获取数据2. 索引怎么高效获取数据没有索引的情况数据从上往下一个个进行查找在数据量大的时候,造成查询速度慢,效率很慢有索引的情况索引原创 2021-06-17 14:03:20 · 179 阅读 · 0 评论 -
Linux安装MySQL(解压版)
1. 下载MysqlMySQL下载官网:https://dev.mysql.com/downloads/mysql/5.7.html#downloads2. 安装MySQL2.1 查看是否有预安装的MySQL[root@centos7 ~]# rpm -qa | grep -i mysql2.2 卸载预安装的MySQL如果有则卸载。[root@centos7 ~]# rpm -e mysql名称 --nodeps2.3 上传MySQL的安装包通过SFTP进行上传,按Alt+P,进入原创 2021-06-16 23:10:24 · 1555 阅读 · 1 评论 -
了解数据库连接池
1. 数据库连接池1.1 什么是数据库连接池数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。详情参考百度百科当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。1.2 Java连接池有那几种性能方面 hikari原创 2021-04-16 11:30:52 · 185 阅读 · 0 评论 -
MySQL基础-流程控制
1. 流程控制结构顺序、分支、循环2. 分支结构2.1 if函数语法:if(条件,值1,值2)功能:实现双分支应用在begin end中或外面2.2 case结构语法:情况1:类似于switchcase 变量或表达式when 值1 then 语句1;when 值2 then 语句2;...else 语句n;end 情况2:case when 条件1 then 语句1;when 条件2 then 语句2;...else 语句n;end 应用在begin e转载 2021-04-05 13:24:41 · 179 阅读 · 0 评论 -
MySQL基础-函数
1. 函数含义:一组预先编译好的SQL语句的集合,理解成批处理语句1、提高代码的重用性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率区别:存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新函数:有且仅有1 个返回,适合做处理数据后返回一个结果1.1 创建语法CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型BEGIN 函数体END注意:1.参数列表 包含两部分:参数名 参数类型2.函数体:肯定会有r转载 2021-04-03 15:24:00 · 159 阅读 · 0 评论 -
MySQL基础-变量
1. 变量1.1 分类系统变量:全局变量会话变量自定义变量:用户变量局部变量1.2 系统变量说明:变量由系统定义,不是用户定义,属于服务器层面注意:全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认会话级别使用步骤:1、查看所有系统变量show global|【session】variables;2、查看满足条件的部分系统变量show global|【session】 variables like '%char%';3、查看指定的系统转载 2021-04-03 15:15:22 · 90 阅读 · 0 评论 -
MySQL基础-存储过程
1. 存储过程含义:一组预先编译好的SQL语句的集合,理解成批处理语句1、提高代码的重用性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率1.1 创建语法CREATE PROCEDURE 存储过程名(参数列表)BEGIN 存储过程体(一组合法的SQL语句)END注意:1、参数列表包含三部分参数模式 参数名 参数类型举例:in stuname varchar(20)参数模式:in:该参数可以作为输入,也就是该参数需要调用方传入值out:该转载 2021-04-03 15:13:16 · 130 阅读 · 0 评论 -
MySQL基础-视图
1. 视图含义:虚拟表,和普通表一样使用mysql5.1版本出现的新特性,是通过表动态生成的数据创建语法的关键字是否实际占用物理空间使用视图create view只是保存了sql逻辑增删改查,只是一般不能增删改表create table保存了数据增删改查案例:查询姓张的学生名和专业名SELECT stuname,majornameFROM stuinfo sINNER JOIN major m ON s.`majorid`= m.`id`WHER原创 2021-04-03 14:49:54 · 153 阅读 · 0 评论 -
MySQL基础-事务
1. 事务(TCL)Transaction Control Language 事务控制语言1.1 什么是事务一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。案例:转账张三丰 1000郭襄 1000update 表 set 张三丰的余额=500 where name='张三丰'意外(上面的失败了,下面的成功了)update 表 set 郭襄的余额=1500 where name='郭襄'1.2 事务的特性ACID原子性:一个事务不可再分割,要么都执原创 2021-04-03 14:49:22 · 98 阅读 · 0 评论 -
MySQL基础-标识列
标识列又称为自增长列(AUTO_INCREMENT)含义:可以不用手动的插入值,系统提供默认的序列值特点:1、标识列必须和主键搭配吗?不一定,但要求是一个key2、一个表可以有几个标识列?至多一个!3、标识列的类型只能是数值型4、标识列可以通过 SET auto_increment_increment=3;设置步长可以通过 手动插入值,设置起始值一、创建表时设置标识列DROP TABLE IF EXISTS tab_identity;CREATE TABLE tab_identity(原创 2021-04-03 14:48:32 · 83 阅读 · 0 评论 -
MySQL基础-常见约束
常见约束含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性分类:六大约束NOT NULL:非空,用于保证该字段的值不能为空 比如姓名、学号等DEFAULT:默认,用于保证该字段有默认值 比如性别PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空 比如学号、员工编号等UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空 比如座位号CHECK:检查约束【mysql中不支持】 比如年龄、性别FOREIGN KEY:外键,用于限制两个表原创 2021-04-02 11:45:10 · 130 阅读 · 0 评论 -
MySQL基础-数据类型
常见的数据类型数值型:整型小数:定点数浮点数字符型:较短的文本:char、varchar较长的文本:text、blob(较长的二进制数据)日期型:一、整型分类:有符号可以插入负数,无符号不可以。使用了zerofil数据默认为无符号。特点:① 如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字② 如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值(最大值或者最小值)③ 如果不设置长度原创 2021-04-02 11:22:55 · 281 阅读 · 0 评论 -
MySQL基础-数据的操作
数据的操作1. 插入操作方式一:常见的插入语法:insert into 表名(列名,...) values(值1,...);1.插入的值与列的类型一致INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)VALUES(13,'唐艺昕','女','1990-4-23','1898888888',NULL,2);2.可以为null的列如何插入值?方式一:INSERT INTO beauty(id,NAME,sex转载 2021-04-02 10:04:19 · 194 阅读 · 0 评论 -
MySQL基础-库的管理和表的管理
一、库的管理1、库的创建语法:create database [if not exists]库名;案例:创建库BooksCREATE DATABASE IF NOT EXISTS books ;2、库的修改2.1 更改数据名称RENAME DATABASE books TO 新库名;2.2 更改库的字符集ALTER DATABASE books CHARACTER SET gbk;3、库的删除DROP DATABASE IF EXISTS books;二、表的管理1.转载 2021-04-02 00:19:37 · 69 阅读 · 0 评论 -
MySQL基础-查询
1. 查询1.1 简单查询语法:SELECT 表字段名 FROM 表名;多个字段用逗号隔开例如:1.查询表中的单个字段SELECT last_name FROM employees;2.查询表中的多个字段SELECT last_name,salary,email FROM employees;3.查询表中的所有字段方式一:SELECT `employee_id`, `first_name`, `last_name`, `phone_number原创 2021-03-28 14:32:10 · 1978 阅读 · 2 评论 -
MySQL基础-数据库的了解
1. 数据库相关概念1、DB:数据库,保存一组有组织的数据的容器2、DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据3、SQL:结构化查询语言,用于和DBMS通信的语言2. 数据库存储数据的特点1、将数据放到表中,表再放到库中2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。3、表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计。4、表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似jav原创 2021-03-28 12:19:08 · 86 阅读 · 0 评论