Mysql
文章平均质量分 88
馒头太帅了
这个作者很懒,什么都没留下…
展开
-
Mysql学习笔记---MySQL运行机制概述
Mysql学习笔记—MySQL运行机制概述1.MySQL运行机制简介2.运行机制—客户端与服务器端建立连接进行通信建立连接(Connectors&Connection Pool),通过客户端/服务器通信协议与MySQL建立连接。MySQL 客户端与服务端的通信方式是 “ 半双工 ”。对于每一个 MySQL 的连接,时刻都有一个线程状态来标识这个连接正在做什么。通讯机制:全双工:能同时发送和接收数据,例如平时打电话。半双工:指的某一时刻,要么发送数据,要么接收数据,不能同时。例如早原创 2021-05-07 01:18:50 · 79 阅读 · 0 评论 -
Mysql学习笔记---MySQL体系架构概述
Mysql学习笔记—MySQL体系架构概述1.MySQL体系架构简介MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。2.MySQL体系架构详解网络连接层:客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术,例如常见的 Java、C、Python、.NET等,它们通过各自API技术与MySQL建立连接。服务层(MySQL Server):服务层是MySQL Server的核心,主原创 2021-05-06 00:16:13 · 109 阅读 · 0 评论 -
Mysql学习笔记---MySQL集群架构之读写分离
Mysql学习笔记—MySQL集群架构之读写分离1. 读写分离引入简介:大多数互联网业务中,往往读多写少,这时候数据库的读会首先成为数据库的瓶颈。如果我们已经优化了SQL,但是读依旧还是瓶颈时,这时就可以选择“读写分离”架构了。读写分离首先需要将数据库分为主从库,一个主库用于写数据,多个从库完成读数据的操作,主从库之间通过主从复制机制进行数据的同步,如下s图所示。在应用中可以在从库追加多个索引来优化查询,主库这些索引可以不加,用于提升写效率。读写分离架构也能够消除读写锁冲突从而提升数据库的读写性原创 2020-12-20 22:55:28 · 1005 阅读 · 1 评论 -
Mysql学习笔记---MySQL的集群架构主从复制实战
Mysql学习笔记—MySQL的集群架构主从复制实战1.搭建环境下载mysql的rpm包,解压查看是否有安装的mariadbrpm -qa | grep mariadb如果有就卸载,没有就跳过这步,卸载如下:rpm -e mariadb包的名称 --nodes安装mysql的rpm包,是有顺序的,安装命令 rpm -ivh 包名common包libs包libs-compat包client包server包devel包初始化一下mysql,使用命令如下:mysqld -原创 2020-12-20 22:18:26 · 154 阅读 · 0 评论 -
Mysql学习笔记---MySQL集群架构之扩容方案
Mysql学习笔记—MySQL集群架构之扩容方案1.扩容场景描述当系统用户进入了高速增长期时,即便是对数据进行分库分表,但数据库的容量,还有表的数据量也总会达到天花板。当现有数据库达到承受极限时,就需要增加新服务器节点数量进行横向扩容。思考一下,横向扩展会有什么技术难度?数据迁移问题分片规则改变数据同步、时间点、数据一致性遇到上述问题时,我们可以使用以下两种方案:停机扩容平滑扩容2.停机扩容: 可用性还是受影响的这是一种很多人初期都会使用的方案,尤其是初期只有几台数据原创 2020-12-20 00:40:47 · 1798 阅读 · 2 评论 -
Mysql学习笔记---MySQL集群架构之分片
Mysql学习笔记—MySQL集群架构之分片1. 分片概念:实现分库分表的规则分片(Sharding)就是用来确定数据在多台存储设备上分布的技术。Shard这个词的意思是“碎片”,如果将一个数据库当作一块大玻璃,将这块玻璃打碎,那么每一小块都称为数据库的碎片(DatabaseSharding)。将一个数据库打碎成多个的过程就叫做分片,分片是属于横向扩展方案。分片:表示分配过程,是一个逻辑上概念,表示如何实现最终结果的思想分库分表:表示分配结果,是一个物理上概念,表示最终实现的结果数据库扩展方案:原创 2020-12-18 01:06:48 · 1314 阅读 · 0 评论 -
Mysql学习笔记---MySQL集群架构之分库分表
Mysql学习笔记—MySQL集群架构之分库分表1. 简介数据量只增不减,历史数据又必须要留存,非常容易成为性能的瓶颈,而要解决这样的数据库瓶颈问题,“读写分离”和缓存往往都不合适,目前比较普遍的方案就是使用NoSQL/NewSQL或者采用分库分表。使用分库分表时,主要有垂直拆分和水平拆分两种拆分模式,都属于物理空间的拆分。分库分表方案:只分库、只分表、分库又分表。垂直拆分:由于表数量多导致的单个库大。将表拆分到多个库中。水平拆分:由于表记录多导致的单个库大。将表记录拆分到多个表中。原创 2020-12-18 00:37:10 · 320 阅读 · 0 评论 -
Mysql学习笔记---MySQL集群架构之双主模式
Mysql学习笔记—MySQL集群架构之双主模式缺实战1. 双主模式简介很多企业刚开始都是使用MySQL主从模式,一主多从、读写分离等。但是单主如果发生单点故障,从库切换成主库还需要作改动。因此,如果是双主或者多主,就会增加MySQL入口,提升了主库的可用性。因此随着业务的发展,数据库架构可以由主从模式演变为双主模式。双主模式是指两台服务器互为主从,任何一台服务器数据变更,都会通过复制应用到另外一方的数据库中。当一个主库坏掉了,那么还自动切换到另一个主库中去两个主库互为主从关系主从复制是通过原创 2020-12-17 23:47:59 · 393 阅读 · 0 评论 -
Mysql学习笔记---MySQL的锁机制
Mysql学习笔记—MySQL的事务隔离级别原创 2020-12-16 22:48:46 · 163 阅读 · 0 评论 -
Mysql学习笔记---MySQL的事务简介和隔离级别
Mysql学习笔记—MySQL的事务和锁1. ACID 特性在关系型数据库管理系统中,一个逻辑工作单元要成为事务,必须满足这 4 个特性,即所谓的 ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。1-1. 原子性原子性:事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。执行实务操作的过程:修改—》Buffer Pool修改—》刷盘,执行后可能会有下面两种情况:事务提交了,如果此时Buf原创 2020-12-15 19:02:04 · 120 阅读 · 0 评论 -
Mysql学习笔记---MySQL索引优化分析
Mysql学习笔记—MySQL索引尝试优化1.EXPLAIN:输出 SELECT 执行的详细信息MySQL 提供了一个EXPLAIN命令,它可以对 SELECT 语句进行分析,并输出 SELECT 执行的详细信息,供开发人员有针对性的优化。如下所示:EXPLAIN SELECT * from user WHERE id < 3;2.select_type:表示查询的类型,常用的值如下:1. 最常见的查询类型是SIMPLE,表示我们的查询没有子查询也没用到UNION查询。SIMPLE原创 2020-12-14 18:41:11 · 135 阅读 · 0 评论 -
Mysql学习笔记---MySQL的索引
Mysql学习笔记—MySQL的索引1.索引的分类索引可以提升查询速度,会影响where查询,以及order by排序。MySQL索引类型如下:从索引存储结构划分:B Tree索引、Hash索引、FULLTEXT全文索引、R Tree索引从应用层次划分:普通索引、唯一索引、主键索引、复合索引从索引键值类型划分:主键索引、辅助索引(二级索引)从数据存储和索引键值逻辑关系划分:聚集索引(聚簇索引)、非聚集索引(非聚簇索引)2.普通索引这是最基本的索引类型,基于普通字段建立的索引,没有任何限制原创 2020-12-14 16:18:13 · 133 阅读 · 0 评论 -
Mysql学习笔记---MySQL的引擎
Mysql学习笔记—MySQL的引擎1.简介存储引擎在MySQL的体系架构中位于第三层,负责MySQL中的数据的存储和提取,是与文件打交道的子系统,它是根据MySQL提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫作存储引擎。在5.5版本之前默认采用MyISAM存储引擎,从5.5开始采用InnoDB存储引擎。使用show engines命令,就可以查看当前数据库支持的引擎信息。InnoDB:支持事务,具有提交,回滚和崩溃恢复能力,事务安全MyISAM:不支持事务和外键,访问速度快原创 2020-12-11 00:21:38 · 136 阅读 · 2 评论 -
Redis---B站学习---redis当下nosql使用场景简介
Redis—B站学习—redis当下nosql使用场景简介一、当下是mysql和nosql一起使用二、阿里巴巴中文站商品信息如何存放的看看阿里巴巴中文网站首页架构发展历程第五代架构的演变第五代架构使命和我们相关的,多数据源多数据类型的存储问题数据架构的日益复杂型...原创 2020-07-05 00:43:21 · 132 阅读 · 0 评论 -
MySQL高级---B站学习总结---MySQL主从复制
MySQL高级—B站学习总结—MySQL主从复制1.复制的基本原理slave会从master读取binlog (binlog指的是mysql配置文件中的二进制日志文件) 来进行数据同步三步骤+原理图: 图解过程首先是Master,只要主机进行data changes,把他的行为写进Binary log中,之后Slave中有个I/O的线程来照着这个Binary log日志,主机做什么操作,我就读出来回传,写到我的Relay log(中继日志)中,这边启动一个SQL的线程进行复制分成以下三步:原创 2020-07-04 12:59:30 · 124 阅读 · 0 评论 -
MySQL高级---B站学习总结---MySQL锁机制之行锁
MySQL高级—B站学习总结—MySQL锁机制之行锁原创 2020-07-04 11:55:11 · 190 阅读 · 0 评论 -
MySQL高级---B站学习总结---MySQL锁机制之表锁
MySQL高级—B站学习总结—MySQL锁机制什么是锁:锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。锁的例子:打个比方,我们到淘宝上买一件商品,商品只有一件库存,这个时候如果还有另一个人买,那么如何解决是你买到还是原创 2020-07-04 01:22:18 · 345 阅读 · 0 评论 -
MySQL高级---B站学习总结---查询截取分析之全局查询日志
MySQL高级—B站学习总结—查询截取分析之全局查询日志全局查询日志(只能在测试环境用,绝不能在生产环境用)配置启用:在mysql的my.cnf中,设置如下:开启general_log=1记录日志文件的路径general_log_file=/path/logfile输出格式log_output=FILE编码启用:命令set global general_log=1;全局日志可以存放到日志文件中,也可以存放到Mysql系统表中。存放到日志中性能更好一些,存储到表中命令set glo原创 2020-07-02 00:40:05 · 118 阅读 · 0 评论 -
MySQL高级---B站学习总结---查询截取分析之Show Profile
MySQL高级—B站学习总结—查询截取分析之Show Profile 一、show profile是什么是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量二、show profile默认情况默认情况下,参数处于关闭状态,并保存最近15次的运行结果三、show profile分析步骤分析步骤是否支持,看看当前的mysql版本是否支持:Show variables like 'profiling';查看状态,默认是关闭,使用前需要开启开启原创 2020-07-02 00:26:45 · 396 阅读 · 0 评论 -
MySQL高级---B站学习总结---查询截取分析之慢查询日志
MySQL高级—B站学习总结—查询截取分析之慢查询日志 一、什么是慢查询日志MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上的语句。由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql执行原创 2020-07-01 23:00:42 · 144 阅读 · 0 评论 -
MySQL高级---B站学习总结---查询截取分析之使用order by 查询优化
MySQL高级—B站学习总结—查询截取分析之查询优化先分析为什么sql比较慢优化原则一: 小表驱动大表,即小的数据集驱动大的数据集Exists提示优化原则二: order by 关键字优化,看看会不会产生filesortorder by 关键字优化1. ORDER BY子句,尽量使用Index方式排序,避免使用FileSort方式排序建表语句和创建复合索引CREATE TABLE tblA ( id INT PRIMARY KEY NOT NULL auto_increment,原创 2020-07-01 01:54:08 · 223 阅读 · 0 评论 -
MySQL高级---B站学习总结---索引失效(应该避免)
MySQL高级—B站学习总结—索引失效(应该避免)首先索引失效是我们应该避免的问题,但是索引失效的前提一定是索引有效,后来才会失效常见的索引失效的原因1.全值匹配我最爱2.最佳左前缀法则如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列。案例:1.建表语句CREATE TABLE staffs ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR ( 24 ) NULL DEFAULT '' COMMENT原创 2020-06-30 01:29:29 · 195 阅读 · 0 评论 -
MySQL高级---B站学习总结---索引优化三表案例
MySQL高级—B站学习总结—索引优化三表案例建表sql三表连接sql创建索引使用Explain执行计划执行结果结果发现join语句的优化注意:原创 2020-06-29 00:28:32 · 106 阅读 · 0 评论 -
MySQL高级---B站学习总结---索引优化两表案例
MySQL高级—B站学习总结—索引优化两表案例案例:创建表CREATE TABLEIF NOT EXISTS `class` ( `id` INT ( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT, `card` INT ( 10 ) UNSIGNED NOT NULL, PRIMARY KEY ( `id` ));CREATE TABLEIF NOT EXISTS `book` ( `bookid` INT ( 10 ) UNSIGNED原创 2020-06-29 00:04:15 · 80 阅读 · 0 评论 -
MySQL高级---B站学习总结---索引优化单表案例
MySQL高级—B站学习总结—索引优化单表案例索引分析单表:建表sql:案例:案例1: #查询 category_id 为1 且 comments 大于 1 的情况下,views 最多的 article_id。 EXPLAIN SELECT id,author_id FROM article WHERE category_id = 1 AND comments > 1 ORDER BY views DESC LIMIT 1;结论: 很显然,type 是 ALL,原创 2020-06-28 23:00:12 · 95 阅读 · 0 评论 -
MySQL高级---B站学习总结---索引优化--性能分析
MySQL高级—B站学习总结—索引优化分析–性能分析1.Mysql Query Optimizer2.Mysql常见瓶颈(cpu和io负担重,以及服务器硬件的性能瓶颈)3.Explain(被称为:执行计划)1.Explain是什么意思(可以看官网)使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈2.Explain可以做什么表的读取顺序(Explain中包含的信息:id的值)数据读取操作的操作类原创 2020-06-24 00:04:58 · 212 阅读 · 0 评论 -
MySQL高级---B站学习总结---索引优化分析--索引简介
MySQL高级—B站学习总结—索引优化分析–索引什么是索引MySQL官方对索引的定义:索引(index)是帮助Mysql高效获取数据的数据结构。所以说,索引的本质是数据结构,可以简单理解为“索引是排好序的快速查找数据结构”索引的目的索引的目的在于提高查询效率,类比字典。假设查询mysql,先查询m,再找有,之后再找sql如果没有索引就需要从a~z从头开始查索引是排好序的快速查找数据结构:索引是排序(解决order by排序的时候如何查找的快)+查找(解决where后面条件拼装组合是否查得快)的两原创 2020-06-23 21:46:47 · 279 阅读 · 0 评论 -
MySQL高级---B站学习总结---索引优化分析--sql性能优化下降
MySQL高级—B站学习总结—索引优化分析–sql性能优化下降性能下降SQL慢的原因查询语句写的烂索引失效(索引分为单值索引和复合索引)create index:创建索引单值索引复合索引关联查询太多join(设计缺陷或不得已的需求)服务器调优及各个参数设置(缓冲,线程等)常见通用的join查询1.sql的执行顺序1. 手写顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_原创 2020-06-19 01:36:09 · 113 阅读 · 0 评论 -
MySQL高级---B站学习总结---逻辑架构介绍
MySQL高级—B站学习总结—逻辑架构介绍MySQL的逻辑架构总览MySQL的逻辑架构分层1.连接层2.服务层3.引擎层4.存储层(存储层中的存储引擎是基于表的,而不是数据库)MySQL的存储引擎MyISAM和InnoDB对比...原创 2020-06-18 20:01:35 · 141 阅读 · 0 评论 -
MySQL高级---B站学习总结---配置文件介绍,MySQL简介
MySQL高级—B站学习总结—架构介绍概述:MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关系数据库管理系统(RDBMS),将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。Mysql 是开源的,所以你不需要支付额外的费用。 Mysql 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 Mysql 系统。 Mysql 支持大型的数据库。可以处理拥有上千万条记录的大型数据原创 2020-06-18 01:11:11 · 96 阅读 · 0 评论 -
MySQL---B站学习总结---流程控制结构
MySQL—B站学习总结—流程控制结构顺序结构:程序从上往下执行分支结构:程序从两条或多条路径中选择一条去执行循环结构:程序在满足一定条件的基础之上,重复执行一段代码一.分支结构1.if函数功能: 实现简单的双分支语法: if(表达式1,表达式2,表达式3)if函数的执行顺序: 如果表达式1成立,则if表达式返回表达式2的值,否则将返回表达式3的值特点: 可以用在任何位置2.case函数情况一: 类似java中的switch语句,一般用于实现等值判断 case 表达式/变量/字段原创 2020-06-17 01:22:13 · 107 阅读 · 0 评论 -
MySQL---B站学习总结---函数
MySQL—B站学习总结—函数1.创建函数语法:CREATE FUNCTION 函数名(参数名 参数类型,…) RETURNS 返回类型 BEGIN 函数体 END2.调用函数SELECT 函数名(实参列表)注意:参数列表包含两部分:参数名 参数类型函数体:肯定会有retur原创 2020-06-16 23:07:01 · 76 阅读 · 0 评论 -
MySQL---B站学习总结---存储过程
MySQL—B站学习总结—存储过程和函数sql中的存储过程和函数类似java中的方法好处:提高了sql语句的重用性,减少了开发程序员的压力提高了效率,简化操作减少了传输次数含义: 一组经过预先编译的sql语句的集合,理解成批处理语句提高了sql语句的重用性提高效率,简化操作减少编译次数,减少数据库连接次数,提高了效率创建存储过程语法:create procedure 存储过程名(in|out|inout 参数名 参数类型,…)begin存储过程体(一组合法有效的sql语句原创 2020-06-16 22:34:50 · 176 阅读 · 0 评论 -
MySQL---B站学习总结---sql的变量
MySQL—B站学习总结—sql的变量变量简介1.系统变量:根据作用域不同进行的细分全局变量:针对整个服务器的会话变量:针对一个会话的2.自定义变量:根据作用域不同进行的细分用户变量:局部变量:(1)系统变量:变量由系统提供,不是用户定义,属于服务器层面@@ 系统级变量语法:一、全局变量作用域: 服务器每次启动将为所有的全局变量赋初始值,针对所有的 会话(连接 )有效,但是不能跨重启查看所有全局变量SHOW GLOBAL VARIABLES;查看满足条件的部分系统原创 2020-06-16 19:58:00 · 107 阅读 · 0 评论 -
MySQL---B站学习总结---数据库视图
MySQL—B站学习总结—数据库视图含义:虚拟的表,和普通的表一样使用,是通过表动态生成的数据,具有一个特点临时性。只保存sql逻辑,不保存查询结果没封装成视图,查询姓张的学生名和专业名封装成视图,查询姓张的学生名和专业名一、创建视图语句CREATE VIEW 视图名AS查询语句;视图的好处:sql语句提高重用性,效率高,简化复杂的sql操作,不必知道查询细节和表实现了分离,保护数据,提高了安全性二、视图的修改方式一:CREATE OR REPLACE VIEW 视图原创 2020-06-16 00:42:43 · 185 阅读 · 0 评论 -
MySQL---B站学习总结---数据库事务
MySQL—B站学习总结—数据库事务(TCL)TCL:Transaction Control Language,事务控制语言事务:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行案例:转账存储引擎:在MySQL中的数据用各种不同的技术存储在文件/内存中查看存储引擎:SHOW ENGINES;事物的属性:ACID原子性(Atomicity):要么都执行,要么都回滚一致性(Consistency):保证数据的状态操作前和操作后保持一致隔离性(Isolat原创 2020-06-15 17:45:04 · 97 阅读 · 0 评论 -
MySQL---B站学习总结---标识列
MySQL—B站学习总结—标识列标识列又称为自增长列含义:可以不用手动的插入值,系统提供默认的序列值1.创建表时设置标识列(AUTO_INCREMENT)模糊查询auto_increment(这个值可修改)auto_increment_increment:添加标识列间隔数auto_increment_offset:添加标识列的起始值修改auto_increment_increment特点:2.修改表时设置标识列3.修改表时删除标识列...原创 2020-06-14 22:51:57 · 78 阅读 · 0 评论 -
MySQL---B站学习总结---常见约束介绍
MySQL—B站学习总结—常见约束介绍原创 2020-06-13 17:10:28 · 106 阅读 · 0 评论 -
MySQL---B站学习总结---常见数据类型
MySQL—B站学习总结—常见数据类型常见类型 1.数值型 1.整型: 2.小数: 浮点型: 定点型: 2.字符型: 1.较短的文本:char,varchar 2.较长的文本:text,blob(较长的二进制数据) 4.日期型:1.整型特点2.浮点型分类:浮点型:float(M,D)double(M,D)定点型:dec(M,D)decimal(M,D)特点:1.M和D的关系M表示:整数部位+小数部位D表示:小数部位原创 2020-06-10 23:12:39 · 148 阅读 · 0 评论 -
MySQL---B站学习总结---DDL语句
MySQL—B站学习总结—DDL语句DDL语句:库和表的管理,都可以创建,修改和删除库的管理:一、创建: create database [ if not exits ] 库名二、修改库:(尽量不回去修改,但是可以更改库的字符集) alter database 库名 character set 字符集三、删除库(表直接没有了): drop database [ if exits ] 库名表的管理:1.创建表 CREATE TABLE IF NOT EXISTS st原创 2020-06-10 19:39:25 · 135 阅读 · 0 评论