Mysql
文章平均质量分 79
阿弥陀佛僧
知幻即离,不假方便;离幻即觉,亦无渐次。
展开
-
Mysql精华总结08——主从复制
十、主从复制 复制的基本原理:slave 会从 master 读取 binlog 来进行数据同步。 ①master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events; ②slave 将 master 的 binary log events 拷贝到它的中继日志(relay log); ③slave 重做中继日志中的事件,将改变应用到自己的数据库中。MySQL 复制是异步且是串行化的。10.1 复制的基本原则 1、每个 slave只有原创 2022-02-23 22:29:43 · 536 阅读 · 0 评论 -
Mysql精华总结07——分区、分库、分表
九、分区、分库、分表 9.1 MySQL分区 一般情况下我们创建的表对应一组存储文件,使用MyISAM存储引擎时是一个.MYI和.MYD文件,使用Innodb存储引擎时是一个.ibd和.frm(表结构)文件。当数据量较大时(一般千万条记录级别以上),MySQL的性能就会开始下降,这时我们就需要将数据分散到多组存储文件,保证其单个文件的执行效率。这么做有以下好处: 逻辑数据分割 提高单一的写和读应用速度 提高分区范围读查询的速度 分割数据能够有多个不同的物理文件路径 高效的保存历史数据原创 2022-02-23 22:16:47 · 826 阅读 · 1 评论 -
Mysql精华总结06——MySQL调优
八、MySQL调优 8.1 影响mysql性能的因素1、业务需求对MySQL的影响(合适合度)2、存储定位对MySQL的影响 系统各种配置及规则数据 活跃用户的基本信息数据 活跃用户的个性化定制信息数据 准实时的统计信息数据 其他一些访问频繁但变更较少的数据 二进制多媒体数据 流水队列数据 超大文本数据 不适合放进MySQL的数据 需要放进缓存的数据3、Schema设计对系统的性能影响 尽量减少对数据库访问的请求 尽量减少无用数据的查询请求4、硬件环境对系统性能的影响原创 2022-02-21 23:33:42 · 846 阅读 · 0 评论 -
Mysql精华总结05——Mysql锁机制
七、MySQL锁机制 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。数据库锁机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问时变得有序所设计的一种规则。 打个比方,我们到淘宝上买一件商品,商品只有一件库存,这个时候如果还有另一个人买,那么如何解决是你买到还是另一个人买到的问题?这里肯定要用到事物,我们先从库存表中取出物品数量,然后插入订单,付款后插入付款表信息,然后原创 2022-02-21 09:58:52 · 526 阅读 · 0 评论 -
Mysql精华总结04——事务
六、MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务。 6.1 ACID — 事务基本要素 事务是由一组SQL语句组成的逻辑处理单元,具有4个属性,通常简称为事务的ACID属性。 A (Atomicity) 原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会原创 2022-02-17 16:57:01 · 653 阅读 · 0 评论 -
Mysql精华总结03——查询
五、MySQL查询 1、count(*) 和 count(1)和count(列名)的区别? 执行效果上:count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL的列;count(1)包括了所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL的列;count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计。 执行效率上:列名为主键,count(列名)会原创 2022-02-17 15:35:26 · 130 阅读 · 0 评论 -
Mysql精华总结02——索引
四、索引 MYSQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。所以说索引的本质是:数据结构。 索引的目的在于提高查询效率,可以类比字典、 火车站的车次表、图书的目录等。 可以简单的理解为“排好序的快速查找数据结构”,数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。 左边的数据表,一共有两列七条记录,最左边的是数据记录的物理地址。为了加快Col2原创 2022-02-09 16:18:35 · 953 阅读 · 0 评论 -
Mysql精华总结01——架构、存储引擎和数据类型
一、Mysql架构 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。 连接层:最上层是一些客户端和连接服务。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证.原创 2022-02-09 15:15:57 · 2240 阅读 · 0 评论 -
数据库——索引
一、索引的概念 引用百度百科中的描述:在关系型数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。 索引采用的数据结构是B+树(即平衡树),而非二叉树,有的数据库也使用Hash桶作为索引的数据结构。B+Tree...原创 2019-07-10 19:30:14 · 1468 阅读 · 0 评论 -
数据库——临时表
一、临时表的概念 在我们操作的表数据量庞大而且又要关联其他表进行查询的时候或者我们操作的数据是临时性数据且在短期内会有很多DML操作(比如购物车)的时候或者我们做查询时需要连接很多个表的时候,如果直接操作数据库的业务表可能效率很低,这个时候我们就可以借助临时表来提升效率。 临时表顾名思义,是一个临时的表,数据库不会将其序列化到磁盘上(有些也会序列化到磁盘上)而是存在于数据库服务器的内存中(因此...原创 2019-07-10 01:14:12 · 29675 阅读 · 0 评论 -
Mysql——主从复制
一、复制原理 1、slave从master读取binlog来进行数据同步 2、三步骤 + 原理图: MySQL复制过程分成三步: ①master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events; ②slave将master的binary log events拷贝到它的中继日志(relay log); ③s...原创 2019-08-25 13:54:28 · 133 阅读 · 0 评论 -
Mysql——锁机制
一、概述 1、定义:锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 2、举例:打个比方,我们到淘宝上买一件商...原创 2019-08-25 13:18:05 · 162 阅读 · 0 评论 -
Mysql——性能分析
一、MySql Query Optimizer MySql Query Optimizer 是 MySql 自带的查询优化器,专门负责优化 SELECT 语句。主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供它认为最优的执行计划(它认为最优的数据检索方式不见得是DBA认为最优的),这部分最耗费时间。 当客户端向 MySQL 请求一条Query,命令解析器模块完成请求分...原创 2019-08-15 17:44:45 · 2353 阅读 · 0 评论 -
Mysql——分库和分表
一、分库 1、为什么分库 数据库集群环境后都是多台slave,基本满足了读取操作。但是写入或者说大数频繁的写入操作对master性能影响就比较大, 这个时候,单库并不能解决大规模并发写入的问题。 分库的优点: ①减少增量数据写入时的锁对查询的影响 ②由于单表数量下降,常见的查询操作由于减少了需要扫描的记录,使得单表单次查询所需的检索行数变少,减少了磁盘IO,时延变短,但是它无...原创 2019-08-19 16:51:00 · 476 阅读 · 0 评论 -
Mysql——分区
1、分区的概念:如果一张表的数据量太大的话,那么myd(表数据)、myi(索引数据)就会变的很大,查找数据就会变的很慢,这个时候我们可以利用mysql的分区功能,在物理上将这一张表对应的三个文件,分割成许多个小块。这样我们查找一条数据时,就不用全部查找了,只要知道这条数据在哪一块,然后在那一块找就行了。如果表的数据太大,可能一个磁盘放不下,这个时候,我们可以把数据分配到不同的磁盘里面去。2、分区...原创 2019-08-19 16:26:53 · 343 阅读 · 0 评论 -
Mysql——索引的优化
一、一般性建议 1、对于单键索引,尽量选择针对当前query过滤性更好的索引 2、在选择组合索引的时候,当前Query中过滤性最好的字段在索引字段顺序中,位置越靠前越好 3、在选择组合索引的时候,尽量选择可以能够包含当前query中的where子句中更多字段的索引 4、尽可能通过分析统计信息和调整query的写法来达到选择合适索引的目的 5、少用Hint强制索引二、查询优化 1、永远...原创 2019-08-19 15:08:10 · 285 阅读 · 0 评论 -
Mysql——show profile
一、介绍 Show profile是mysql提供的可以用来分析当前会话中语句执行的资源消耗情况的工具。可以用于SQL调优的测量,默认情况下,show profile 参数处于关闭状态,并保存最近15次的运行结果。二、分析步骤 1、是否支持,看看当前的mysql版本是否支持:Show variables like 'profiling'; #默认是关闭的 2、开启功能,默认是关闭,...原创 2019-08-19 14:47:30 · 784 阅读 · 0 评论 -
Mysql——索引失效
1、建表CREATE TABLE staffs ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR (24) NOT NULL DEFAULT '' COMMENT '姓名', age INT NOT NULL DEFAULT 0 COMMENT '年龄', pos VARCHAR (20) NOT NULL DEFAULT '' ...原创 2019-08-19 14:39:05 · 5804 阅读 · 6 评论 -
Mysql——索引分析和优化
一、单表 1、创建表CREATE TABLE IF NOT EXISTS `article` (`id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,`author_id` INT(10) UNSIGNED NOT NULL,`category_id` INT(10) UNSIGNED NOT NULL,`views` IN...原创 2019-08-19 13:31:51 · 131 阅读 · 0 评论 -
Mysql——索引
一、索引的概念 1、概念 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质——索引是数据结构。一般来说索引本身占用的存储空间也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。我们平常所说的索引,如果没有特别指明,都是指B+树结构组织的索引。其中聚集索引,次要索引,覆盖索引,复合索引,前缀索引,唯一索引默认都是使...原创 2019-08-14 11:22:58 · 333 阅读 · 0 评论 -
Mysql——常见函数
一、函数分类 SQL中函数分为单行函数和分组函数,单行函数处理单行的数据返回一个结果,分组函数处理多行的数据返回一个结果,因此也将分组函数称为聚合函数或组函数,一般用分组函数做统计,因此又称为统计函数。函数在调用时可以嵌套。二、单行函数 单行函数根据处理的数据类型又可细分为字符函数、数学函数、日期函数、流程控制函数、其他函数。 1、字符函数 ①concat:字符连接函数SELECT...原创 2019-06-19 00:27:36 · 1466 阅读 · 0 评论 -
Mysql——分组查询
在进行分组统计时会用到分组查询,比如按部门统计人数、按工种统计工资情况等。分组查询一定会使用到分组函数,也一定会用到group by子句。 Tip: 1️⃣在分组查询中,所有不是分组函数的查询字段都要出现在group by子句之后,出现的顺序不影响查询结果; 2️⃣where子句一定是紧跟着from子句的,from关键字后是操作的表对象,where子句中的判断条件要么是常量要么是操作...原创 2019-06-20 00:47:03 · 31862 阅读 · 0 评论 -
Mysql——简介
一、安装和配置 1、安装:略 2、配置: 在mysql的安装目录下有个my.ini的配置文件,在该文件中可以配置mysql的端口、数据文件的保存路径(datadir)、存储引擎、数据库连接数等,如果修改了此文件,需要重新启动数据库服务配置修改才能生效。二、数据库服务的启动和停止 两种方式: 1、在计算机管理的服务中手动启动数据库服务,可以将服务的启动设置为自动,这样会开机即启动 ...原创 2019-06-16 23:49:03 · 168 阅读 · 0 评论 -
Mysql——连接查询
mysql的sql99标准不支持全外连接等值连接由第一个表挨个去匹配第二个表,符合where条件的就出现在结果中,匹配的次数=m*nwhere中支持表的别名但不支持字段的别名,一旦为表起了别名就必须使用别名.字段而不能使用表名.字段,或者在没有歧义的字段前什么都不加查询的字段有一个为null时,会不会展示结果...原创 2019-06-22 11:33:32 · 1762 阅读 · 0 评论 -
Mysql——子查询、分页查询和联合查询
详情参看:Mysql中的子查询原创 2019-06-26 00:07:22 · 370 阅读 · 0 评论 -
Mysql——存储过程
一、存储过程简介 存储过程是一组预先编译好的SQL语句的集合,类似于Java中封装的方法,存储过程在创建之后,可以多次调用,提高了代码的重用性,同时减少了SQL语句的编译次数和与服务器的连接次数(将多个SQL语句封装成一个存储过程则这多个语句的执行只需要与数据库服务器建立一次连接),提高了效率。二、存储过程的创建和调用 1、创建 格式:DELIMITER $ #定义结束符CREATE...原创 2019-07-08 00:00:29 · 196 阅读 · 0 评论 -
Mysql——DML(插入、修改、删除)
一、插入 插入使用关键字INSERT INTO,插入有两种方式:#方式一:常用INSERT INTO t_aVALUES(...);#方式二:使用set,不常用INSERT INTO t_aSET id=1,`name`='刘涛'; 使用方式一的好处: 1️⃣方式一支持一次性插入多行数据(只需要建立一次数据库连接),且效率远远高于使用多个insert语句(一个insert语...原创 2019-06-27 00:07:41 · 279 阅读 · 0 评论 -
Mysql——函数
一、函数简介 和存储过程一样,函数也是是一组预先编译好的SQL语句的集合,且其优缺点也和存储过程一样,在创建之后,可以多次调用,提高了代码的重用性,同时减少了SQL语句的编译次数和与服务器的连接次数,提高了效率。 和存储过程不同的是,存储过程可以有任意个返回值(包括0个),但函数必须有且仅有一个返回值。存储过程适合做批量的插入、更新、删除等,而函数适合做数据处理后返回一个结果。二、函数的创建...原创 2019-07-08 21:10:00 · 619 阅读 · 1 评论 -
Mysql——流程控制
一、流程控制简介 Mysql中的流程控制也分为三种: 1️⃣顺序结构:程序从上往下依次执行 2️⃣分支结构:程序按条件选择执行 3️⃣循环结构:程序在满足一定条件下时重复执行一组语句 之前基本都属于顺序结构,接下来主要介绍分支结构和循环结构。二、分支结构 1、IF函数 语法:IF(表达式1,表达式2,表达式3); 说明:如果表达式1成立,则返回表达式2的结果,否则返...原创 2019-07-09 00:58:37 · 227 阅读 · 0 评论 -
Mysql——DDL(数据库定义语言)
一、库的管理 1、创建库 格式:create database [if not exists] database_name [character set 字符集名]; 示例:CREATE DATABASEIF NOT EXISTS boys CHARACTER SET 'utf8'; 2、修改库 格式:alter database 库名 character set 字符集名...原创 2019-07-04 22:05:18 · 323 阅读 · 0 评论 -
Mysql——TCL(事务控制)
一、事务的概念 事务是由一条或多条SQL语句组成的一个执行单元,这个单元作为一个不可分割的执行整体,要么全部执行成功,要么全部执行失败。若其中有一条执行失败则事务会回滚到事务开始之前的状态。 事务有四个属性(ACID):原子性、一致性、隔离性、持久性 1、原子性(Atomicity):指事务是一个不可分割的整体,事务中的操作要么都执行,要么都不执行。 2、一致性(Consistency...原创 2019-07-05 00:38:54 · 745 阅读 · 0 评论 -
Mysql——视图
一、视图简介 Mysql从5.0.1版本开始提供视图功能。视图是一种虚拟存在的表,其中的数据来自定义视图时的查询语句的查询结果,因此视图中的数据是动态变化的。视图可以看做给查询语句起了一个别名,视图只是保存了SQL的逻辑,并不会保存查询结果。视图完全可以当做一个子查询来使用(子查询是可以作为临时表进行查询和连接等操作的),使用视图最大的好处是简化了SQL的编写。视图一般用来封装经常使用的复杂的查...原创 2019-07-06 00:18:03 · 318 阅读 · 0 评论 -
Mysql——变量
一、变量概述 我们在定义存储过程或函数时可能会用到变量。Mysql中变量有两类:系统变量和自定义变量。系统变量是由安装的Mysql服务提供的,自定义变量则是我们自己声明的。根据作用域的不同,系统变量又分为全局变量和会话变量,自定义变量则分为用户变量和局部变量。二、系统变量 系统变量是系统为我们提供的变量,比如事务的自动提交是否开启、当前的事务隔离级别、当前使用的字符集等,这些变量是供Mysq...原创 2019-07-06 13:31:09 · 251 阅读 · 0 评论 -
Mysql——Linux下的安装和配置
1、下载:官方下载地址,下载完成后将下载的rpm包上传至Linux的/opt/mysql/目录下 注意:选择版本和系统并同时下载服务端和客户端2、检查当前系统是否安装过mysql:有的话会显示安装的版本等信息rpm -qa|grep -i mysql若已经安装可以先将其卸载:查出几个卸载几个rpm -e 要卸载的软件包名 #此处的软件包名是上面查询出的结果3、安装rpm -i...原创 2019-08-13 15:18:24 · 252 阅读 · 0 评论 -
Mysql——逻辑架构
一、逻辑架构 1、总体概览 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎,怎么存数据、怎么取数据,都与存储引擎有关。 ①最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端...原创 2019-08-13 16:02:12 · 150 阅读 · 0 评论 -
Mysql——影响Mysql性能的因素
1、业务需求对mysql的影响:应该合适合度 比如:买家卖家评论帖子的实时统计,要求实时统计对该产品的评价帖子总数。假如这个数据量很小,可以实时查询,假如越来越多呢?另外你正在统计时也可能有买家卖家在修改增删评论。怎么解决呢? 在主表中专门使用一个字段来保存这个帖子数目。 每一个买家新增一条评论就更新一下这个数字的值。但买家是多个(高并发),又是不定时的在发布和修改帖子,就算我们使用In...原创 2019-08-13 16:55:01 · 497 阅读 · 1 评论 -
Mysql——简单查询
1、查询字段的内容:可以是表中的字段、常量值、表达式、函数#查询常量、表达式、函数时在不涉及表中字段时无需FROM子句SELECT 100;SELECT 'john';SELECT 100%90;SELECT VERSION();2、SQL中的+是运算符,不能作为字符串连接符,但如果+连接的字符串可以转化为数值型,则可以进行加法运算,详细规则如下:SELECT 100+90;#...原创 2019-06-18 00:22:07 · 163 阅读 · 0 评论