数据库性能测试-mysql篇

news2024/11/23 20:05:59

一、数据库主从同步的工作原理

主从复制原理:
上边这张交互图就清楚的标记出了Master节点如何同步到Slave节点

1、首先Master上的修改、删除、新增操作都会被记录到一个叫做binlog的文件中,它是一个二进制日志文件。
2、Slave通过I/O线程读取binlog文件并写入到自己的relaylog(中继日志)中。
3、主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog。
4、Slave另一个SQL线程会读取自身的relaylog文件,并把对应的操作在自己的节点上执行一次,达到同步的效果。

二、数据库分库分表的设计方法

1、拆分的原因

a.单表或库的数据量太大

b.硬件不能升级或无法升级

2、分库分表方案

a.业务拆分:用户、订单、商品可以单独放在不同的表、不同库。

b.垂直拆分:商品表中的不同发类的商品比如:电子产品和体育用品,分在不同的表或者库。

c.水平拆分:一致性哈希算法。

三、mysql重点监控指标

1、QPS

每秒钟查询数量

show global status like 'Question%';

结果=查询的数量/查询的时间 = 9033/0.03

2、TPS

 

 其中

Com_commit=show global status like 'Com_commit';

Com_rollback=show global status like 'Com_rollback';

3、线程连接数

a.使用最大的连接数:

show global status like 'MAX_USER_CONNECTIONS';

b.线程数:

show global status like 'Threads%';

4、Query Cache

查询缓存用于缓存select查询结果,就是下次接收到查询请求时,不再执行实际查询处理而直接返回结果,适用于大量查询且很少改变表中的数据。

show status like 'Qcache%';

结果:

通过下面这个公式计算:

5、锁定状态

show status like '%lock%';结果如下:

 

6、主从延时

show slave status

四、mysql的慢查询

执行速度超过定义的时间的查询

 参数:

常用的命令:

1、

2、

3、

五、sql语句的性能分析

explain select * from user;结果如下:

返回值中的属性的解释

1、id

 2、select_type

3、table

 

4、type(重要)

连接类型。有多个参数,先从最佳类型到最差类型介绍 重要且困难

system

表仅有一行,这是const类型的特列,平时不会出现,这个也可以忽略不计

const,eq_ref,ref,fulltext,ref_or_null,unique_subquery,index_subquery,range,index_merge,

index:该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。(也就是说虽然all和Index都是读全表,但index是从索引中读取的,而all是从硬盘中读的)

all:这个是全表扫描数据文件,最差的一种。

5、possible_keys 提示使用哪个索引会在该表中找到行,不太重要

6、keys MYSQL使用的索引,简单且重要

7、key_len MYSQL使用的索引长度

8、ref   ref列显示使用哪个列或常数与key一起从表中选择行。

9、rows 显示MYSQL执行查询的行数,简单且重要,数值越大越不好,说明没有用好索引

10、Extra  该列包含MySQL解决查询的详细信息。

六、mysql的索引

1.1、MySQL索引是什么?

索引是一个单独的、存储在磁盘上的数据库结构 ,包含着对数据表里所有记录的引用指针。

1.2、 MySQL索引的存储类型有哪些?

MySQL中索引的存储类型有两种,即 BTree 和 Hash。

1.3、MySQL索引在哪里实现的?

索引是在存储引擎中实现的。(MySQL 的存储引擎有:InnoDB、MyISAM、Memory、Heap)

InnoDB / MyISAM 只支持 BTree 索引
Memory / Heap 都支持 BTree 和 Hash 索引

其中MyISAM的优点:1、读的性能比InnoDB高;2、索引与数据分开,使用了压缩,从而提高了内存的使用率。

缺点:1、不支持事务;2、写入数据时,直接锁表。

其中InnoDB的优点:1、支持事务;2、支持外键;3、支持行级锁;

缺点:1、不支持fulltext索引(全文索引);2、行级锁并不绝对,当不确定扫描范围时,锁全表;3、索引与数据是紧密捆绑的,没有使用压缩导致体积庞大、

1.4、存储引擎是什么?

存储引擎就是指表的类型以及表在计算机上的存储方式。

1.5、索引的优缺点有哪些?

优点:

提高数据的查询的效率(类似于书的目录)
可以保证数据库表中每一行数据的唯一性(唯一索引)
减少分组和排序的时间(使用分组和排序子句进行数据查询)
被索引的列会自动进行分组和排序
缺点:占用磁盘空间
降低更新表的效率(不仅要更新表中的数据,还要更新相对应的索引文件)

1.6、索引的分类:

其中有主键索引、唯一索引、普通索引、全文索引、组合索引

1、主键索引:它是一种特殊的唯一索引,不允许有空值。一般在建表的时候同时创建主键索引。

2、唯一索引:索引的列的值必须唯一,但允许有空值。

3、普通索引:最基本的索引,它没有任何限制。

4、全文索引:类型为fulltext,只适用于MyISAM表的一个索引类型。被索引列的数据类型只能是以下三种的组合char、varchar、text

5、组合索引:也叫多列索引,在多列上同时创建索引,使得多列的组合值唯一。

七、mysql数据库的实时监控

orzdba

Orzdba是淘宝DBA团队使用perl语言开发出来的一个脚本,可以监测系统,cpu,磁盘,innodb引擎内部实时信息的运维自动化工具,非常实用。github上有大佬用python改写了,直接clone下来即可使用。 linux下直接执行`git clone https://github.com/cnlubo/orzdba`即可,执行`tree orzdba/`查看目录下文件,最主要的就是orzdba.py这个脚本了。

八、mysql集群监控工具介绍

天兔LEPUS

参考的博客:

1、数据库主从同步原理解析_码厚炮的博客-CSDN博客_数据库主从同步原理

2、一文搞懂 MySQL 索引_daydreamed的博客-CSDN博客_mysql索引

3、MYSQL explain详解_Venlenter的博客-CSDN博客_mysql explain

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/46481.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AidAim Single File虚拟存档/备份库

AidAim Single File虚拟存档/备份库 Single File System是一个本机Delphi虚拟存档/备份库,提供透明的压缩和强大的加密。单文件系统允许您轻松处理存储在单个文件中的多个文件或文件夹。它还包括高级加密和压缩功能。此解决方案允许您在单个文件中存储小型但功能强大…

单机多GPU训练模型入门指南(torch.nn.DataParallel)

目录 模型部分 1. 指定使用的GPU 2. 使用Torch的数据并行库(将模型搬到GPU上) 3. 保存模型 数据部分 1. 选择GPU 2. 将数据搬到GPU上 3. loss的反向传播修改 查看效果 本文将介绍模型和数据两部分的处理。 模型部分 1. 指定使用的GPU 1.1 导入os库 import os 1.2 …

基于微信小程序的付费自习室系统平台设计与实现的源码+文档

摘要 首先,论文一开始便是清楚的论述了小程序的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了小程序的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设…

Oracle Primavera P6V7 SQL异常案例

目录 系统环境 原因分析 解决方案 本案例由一名爱学习的网友提供,经过在Oracle Support的分析整理成文,希望给初学的P6用户提供参考和帮助。 系统环境 简要说明下P6安装的系统环境 操作系统:Windows 7 / Server 2008数据库&#xff1a…

CentOS中使用Docker来部署Postgresql

场景 CentOS7中Docker的安装与配置: CentOS7中Docker的安装与配置_霸道流氓气质的博客-CSDN博客 在上面安装好Docker之后,怎样使用docker部署Postgresql数据库。 注: 博客:https://blog.csdn.net/badao_liumang_qizhi 关注公…

canal-server使用

canal是什么 canal,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 这句介绍有几个关键字:增量日志,增量数据订阅和消费。这里我们可以简单地把canal理解为一个用来同步增量…

10月11日

gitlab 用https网址拉取项目的时候,出现: error setting certificate verify locations: CAfile: D:/Git/Git/mingw64/ssl/certs/ca-bundle.crt CApath: none原因是: 修改为自己git所在的文件夹即可(原因是我是从另外一台电脑直…

AndroidStudio连接真机测试运行

文章目录准备步骤1、打开要连接的手机2、配置AndroidStudio3、用数据线将手机和电脑连起来4、打开 开发者模式后问题1、可能需要下user driver才能连接手机2、电脑连不上手机3、手机连上电脑后不能运行软件运行Android Studio运行虚拟机时会占用较大的电脑内存而自己电脑内存不…

流媒体传输 - HLS 协议

HLS 全称是 HTTP Live Streaming,是一个由 Apple 公司提出的基于 HTTP 的媒体流传输协议,用于实时音视频流的传输。目前 HLS 协议被广泛的应用于视频点播和直播领域。 概述 原理介绍 通过将整条流切割成一个小的可以通过 HTTP 下载的媒体文件&#xff…

SpringBoot中拦截器的使用

SpringBoot中拦截器接口: public interface HandlerInterceptor {default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return true;}default void postHandle(HttpServletRequest request, …

【jmeter】windows下使用 (测试MQTT)

1. 添加线程组 二、添加如下请求 1. 添加创建连接请求-选中线程组, 点击右键,添加>取样器>MQTT Connect设置MQTT连接 本次使用本机开启的MQTT服务进行测试,默认ip为127.0.0.1,端口默认1883 2. 添加发布请求-选中线程组 …

面试:各种热修复框架对比

目前Android热修复的技术方案大致可以归类为以下几种: 资源热替换代码热修复动态库替换 资源修复 创建新的AssetManager实例,利用反射加载外部(SD卡)需要热修复的资源路径通过当前Activity实例获取Resouces资源类,然后反射得到mAssets属性&…

powerlevel10k 颜色和图标的自定义设置

文章目录1. 颜色的更改2. 图标的更改3. 附录powerlevel10k 的设置向导命令是p10k configure如果想在这个预定好的设置上面做一些个人的自定义设置,就得更改 powerlevel10k 的配置文件:~/.p10k.zsh 下面的操作主要就是在这个配置文件上面更改。 1. 颜色的…

浅谈芯片验证中的仿真运行之 compilation unit 技术(实践篇)

前言 前面文章,讲述了一些关于SV语法下,编译问题的一些基本概念。其实,芯片验证中仿真工具编译仿真文件、RTL文件的一些规则,依据每一家仿真工具内部的编译原理,都是保密的,用户只要按照仿真工具的使用规则去使用,即可。最近,笔者遇到了一个问题,今天空下来,总结一下…

Windows本地安装Redis且设置服务自启

redis中文网:http://redis.cn/ 如果是安装Windows版的redis需要去GitHub上下载安装包 如果是在Linux上安装,可以直接使用命令进行安装 本次教程是基于Windows系统进行的 GitHub地址:https://github.com/microsoftarchive/redis 选择需要下…

Online Decision Transformer

摘要 最近的工作表明,离线强化学习 (RL) 可以表述为序列建模问题 (Chen et al., 2021; Janner et al., 2021),并通过类似于大规模语言建模的方法来解决。 然而,RL 的任何实际实例化还涉及在线组件,其中在被动离线数据集上预训练的…

Express:Express 中间件

中间件的概念 1. 什么是中间件 中间件(Middleware ),特指业务流程的中间处理环节。 2. 现实生活中的例子 在处理污水的时候,一般都要经过三个处理环节,从而保证处理过后的废水,达到排放标准。 处理污水…

aws cloudformation 堆栈集的创建和使用

资料 使用 AWS CloudFormation StackSets 跨多个 AWS 账户和区域配置资源AWS cloudformation示例模板堆栈集堆栈实例状态原因 很多组织使用大量的 AWS 账户,通常用 AWS Organizations 将这些账户组织为分层结构,分组为不同的组织部门 (OU)。并且希望确…

Teams app 的 SSO 机制

我们来继续我们的 Teams sample 之旅,上一个讲了 Tab app,那我们这里再深入一步,看一下如何使用 sso 机制。 sso 是一个很有用机制,它可以让我们的 teams app 能获取当前用户的身份。sso 很多时候比较难彻底理解,在开…

刷爆力扣之公平的糖果交换

刷爆力扣之公平的糖果交换 HELLO,各位看官大大好,我是阿呆 🙈🙈🙈 今天阿呆继续记录下力扣刷题过程,收录在专栏算法中 😜😜😜 该专栏按照不同类别标签进行刷题&#xff…