【MySQL】日志与性能优化

是什么?

是最流行的关系型数据库管理系统

关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据

mysql的优点:

1、性能卓越服务稳定,很少出现异常宕机

2、开放源代码且无版本制约,自主性强、使用成本低

3、历史悠久、社区及用户非常活跃,遇到问题可以很多获取帮助

4、软件体积小,安装使用简单,易于维护,安装及维护成本低

5、支持多种操作系统,提供多种API接口,支持多种开发语言

6、mysql是一个真正多用户、多线程SQL数据库服务器,它能够快速、有效和安全的处理大量数据

mysql命名机制

如:mysql-5.7.20

第一个数字5是主版本号,用于描述文件的格式,所有版本5的发行版都有相同的文件夹格式

第2个数字7 是发行级别,主版本号和发行级别组合在一起构成发行序列号

第3个数字20 是此发行系列的版本号,随每次新发行的版本递增

mysql使用场景

1、Web网站系统:因为mysql的数据库安装配置简单,使用过程中的维护较于大型商业数据库管理系统没有那么复杂,性能出色。另一个重要原因是开放源代码。可以免费使用

2、日志记录系统:mysql数据库的插入和查询性能非常高效,如果设计的好可以达到很高的并发性能,所以对于需要大量的插入和查询日志记录的系统来说,mysql比较适用

3、嵌入式系统:嵌入式环境对软件系统最大的限制是硬件资源有限,在嵌入式环境下运行的软件系统必须是轻量级低消耗的软件,mysql是非常合适的数据库系统,并且mysql有专门针对于嵌入式环境的版本

......

mysql日志

四种mysql日志

1、二进制日志:以二进制的形式记录了数据库中的操作,但不记录不改变数据库的sql语句(如select、show),二进制日志主要用户数据库恢复和主从复制

2、错误日志:记录mysql的启动,关闭和运行错误等信息,默认开启且无法停止

3、通用查询日志:记录用户登录和记录查询的信息

4:慢查询日志:记录查询时间超过指定时间(默认10秒)的操作默认情况下,只开启了错误日志功能,其它的日志功能需要管理员设置

#在navicat中执行
show global variables like '%log%';     #查询日志
#二进制日志
show global variables like "%log_bin%";     #查看二进制日志
show binary logs    #查看二进制文件列表
show master status      #查看正在写入的binlog文件

#错误日志
show variables like 'log_error'     #查看错误日志:会显示出来错误日志地址

#通用查询日志
show variables like 'general_log_file'  #查看通用查询日志

#慢日志、
show global variables like 'long%';     #慢日志超时时间查询

Mysql性能优化

为什么要进行性能优化?

提高mysql数据库整体的性能,需要合理的数据库结构设计和参数调整来提高用户操作响应的速度,同时还要尽可能节省系统资源,方便系统可以提供更大负荷的服务

性能参数:

查询mysql的性能参数

SHOW status;

例:输入“show status”指令查询到的所有性能参数

image.png

常用的参数如下:

SHOW STATUS LIKE 'Connections'; #连接mysql服务器的次数
SHOW STATUS LIKE 'Uptime';  #服务器上线时间
SHOW STATUS LIKE 'Slow_queries';    #慢查询的次数:超过指定时间的SQL语句查询称为“慢查询”。
SHOW STATUS LIKE 'Com_select';  #查询操作的次数
SHOW STATUS LIKE 'Com_insert';  #查询插入操作的次数,对于批量插入操作,只累加一次
SHOW STATUS LIKE 'Com_update';  #更新操作的次数
SHOW STATUS LIKE 'Com_delete';  #删除操作的次数

EXPLAIN和DESCRIBE(查询分析器)

EXPLAIN语句的作用:分析sql语句的性能

参考链接:

http://c.biancheng.net/view/7873.html

https://www.jianshu.com/p/8fab76bbf448image.png

优化插入数据速度两种方式

1、禁用索引

对非空表插入数据时,mysql会根据表的索引对插入的记录进行排序,插入大量数据时,会降低插入数据的速度,为了解决这种情况,可以在插入数据之前禁用索引,数据插入完毕后开启索引

//禁用索引语句
ALTER TABLE "表名" DISABLE KEYS;
//重新开启索引的语句
ALTER TABLE "表名" ENABLE KEYS;

2、禁用唯一性检查

插入数据时,mysql会对插入的数据进行唯一性检查,这种唯一性检验会降低插入数据的速度,为了降低这种情况对查询速度的影响,可以在插入数据前禁用唯一性的检查,等插入数据完毕后开启

//禁用唯一性检查语句
SET UNIQUE_CHECKS=0;
//开启唯一性检查语句
SET UNIQUE_CHECKS=1;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值