我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql配置连接参数设置及性能优化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql配置连接参数设置及性能优化

1 前言

在java开发中,最常用的数据存储就是数据库,其中常用的就是mysql,关于数据库的连接配置信息,可能就不是那么的清除了,这里做一个配置信息的说明。

2 数据库连接配置信息

jdbc:mysql://localhost:3306/database_name?serverTimezone=Asia/Shanghai&useUnicode=true&
characterEncoding=utf8&useSSL=false&tinyInt1isBit=true&allowMultiQueries=true&
rewriteBatchedStatements=true&useAffectedRows=true&defaultFetchSize=10000&
zeroDateTimeBehavior=convertToNull

3 配置信息说明

  • 1、serverTimezone=Asia/Shanghai,即时区设置,上海时间即东八区,高版本的mysql需要设置为 GMT%2B8(GMT+8)
  • 2、useUnicode=true 使用unicode 编码
  • 3、characterEncoding=utf8 数据库连接字符集
  • 4、useSSL=false 是否使用 ssl
  • 5、tinyInt1isBit=true 转换为 tinyint(1) 转换为 boolean ,否则为 int
  • 6、allowMultiQueries=true 是否允许多行查询,在批量更新数据时,update 语句使用分号(;)进行连接,此时则需要配置运行多行查询。
  • 7、rewriteBatchedStatements=true 批处理时需要设置该参数,在mysql5.1.13以上版本才能使用,对 update/insert/delete 都可以生效。数据量大时,消耗时间 jdbc batch < mybatis batch < foreach 循环。
  • 8、useAffectedRows=true,默认为false。是否使用影响行数,默认为找的所有修改行数,即false。在update 的情况下,更新3条,如果只有两条有变化,则返回2(useAffectedRows=true),否则返回3.
  • 9、defaultFetchSize=10000 默认获取条数
  • 10、zeroDateTimeBehavior=convertToNull 默认时间转换为null,避免转换报错。0000-00-00 时间转换为 null 

4 数据库sql

# 正常的插入数据
insert into table_name
# 如果数据存在则忽略,否则进行插入
insert ignore into table_name
# 如果数据存在则更新
insert into table_name (id,name) values(1,'小明') ON DUPLICATE KEY UPDATE id = 1,name = "xiaoming"
# 如果存在则替换
replace into table_name
# mysql 还有计算功能
select 1 + 4 # 计算结果为 5
# ifnull 如果字段为空则赋默认值为 0
select ifnull(age,0) from table_name
# 正则查询 user_no 不包含 数字
SELECT * FROM table_name  WHERE user_no REGEXP '[^0-9]'
# 时间处理
select
  DATE_FORMAT(create_time, '%Y%m%d %T'), -- 20210204 12:00:00
  id,
  DATE_FORMAT(create_time, '%Y%m%d%H') as time_str, -- 2021020412
  DATE_FORMAT(create_time, '%Y%m%d') as day_str,  -- 20210204
  DATE_FORMAT(create_time, '%H') as hour_str,  -- 12
  WEEKDAY(create_time) as week_str  -- 0-6,分别是 周一到周日
from
  table_name

5 mysql 性能优化的关注点

其实,mysql 性能优化不是简单的知道和使用 explainshow profile就天下无敌了,这两个只是重要的方面,何况作为资深的CRUD工程师还未必经常使用,任何的知识都是了解->熟悉->精通,当真正的了解原理或者系统的掌握才是真正的悟道。接下来开始进入正题,mysql又能优化主要为4个方面:

  • 1 硬件资源和操作系统方面的优化
  • 2 架构设计方面的优化
  • 3 mysql服务配置项的优化
  • 4 sql执行层面的优化

6 硬件和操作系统方面的优化

硬件和操作系统就是指mysql服务所运行的服务器硬件资源情况,影响mysql性能的主要因素分为 cpu 、内存大小、磁盘读写速度、网络带宽,硬件是指操作系统的网络配置和系统文件句柄数设置(linux 系统中,一切皆文件,了解过ES搭建的同学都知道,ES的搭建就需要修改系统最大打开的文件数) ,这部分的优化一般由运维工程师和DBA联合完成,在项目开发伊始,可以根据业务需要承载的数据量和 TPS 要求根据经验,考虑后续的业务扩展性,选择与业务相适配的mysql服务。

7 架构设计方面的优化

mysql是一个磁盘io访问频繁的关系型数据库,在高并发和高性能的应用场景中会承受巨大的压力,可以采取以下措施来应对:

  • 1 搭建mysql主从集群,单个mysql服务一旦宕机,将会导致依赖mysql服务的应用无法响应导致服务不可用,可以采用采用主从集群或者主主集群避免单点故障,保障mysql服务的高可用性。
  • 2 读写分离设计,在读多写少的场景中,可以采用读写分离的方案避免读写冲突导致的性能问题。
  • 3 采用分库分表的设计。通过分库可以降低单个mysql服务器的io压力,通过分表的机制可以降低单表数据量,提高sql的查询效率。
  • 4 热点数据引入Nosql。引入Redis或者MongoDB等非关系型数据库,可以缓解mysql的访问压力,提升数据的检索性能。

8 mysql 程序配置优化。

mysql配置文件的优化,一般通过 mysql配置文件my.cnf来设置。配置项一般包括:

  • mysql的最大连接数max_connections(注意这里说的不是项目中设置的数据库连接池的连接数)
  • 最大的传输包(max_allowed_packet = 16M
  • 开启 bin log(默认不开启,主要用在 mysql 同步的场景中)
  • general log(通用日志记录 sql 的执行记录)来记录日志
  • 还有就是缓冲区(buffer pool), 包括: 关联查询缓冲区 join_buffer_size=128M, 读数据缓冲区read_buffer_size=16M,随机读缓冲区read_rnd_buffer_size=32M,排序数据缓冲区 sort_buffer_size=32M, innodb 数据缓冲区innodb_buffer_pool_size=4G

这些参数的配置一般和服务器的资源和使用场景有关,需要根据实际情况来设置。配置项的修改需要关注两个点,一是配置的作用范围,分为会话级别和全局范围,全局参数对已经存在的会话不会生效,会话参数设置只在当前会话生效,会话结束则配置失效,全局类的配置放在默认的配置文件中,否则服务重启将会失效。第二是否支持热加载

9 sql 执行层面优化

sql执行层面优化的要点如下:

  • 1 慢sql查询分析,通过慢sql查询日志和慢sql查询分析工具来定位有问题的sql列表
  • 2 执行计划。通过explain 关键字 + 慢 sql查看当前sql的执行计划,需要重点关注select_type、type、 key、 rows、 filterd、 possible_keys来分析 sql 慢的原因.
  • 3 使用show profile工具来分析,该工具是mysql提供的分析当前会话中sql语句资源消耗情况的工具,可以用于sql调优的测量,当前会话中默认是关闭的状态,需要根据情况打开,默认保存最近 15 次的分析结果,针对慢sql可以通过show profile工具来进行详细分析,得到整个过程中所以资源的开销情况,比如io开销cpu开销和内存开销等情况

10 最终总结

  • 1sql的查询一定要根据索引来进行数据扫描
  • 2 避免查询列上使用函数运算或者运算符,避免索引失效
  • 3where条件语句中like %好尽量放置在右边
  • 4 使用索引扫描,联合索引的列从左往右,命中的越多越好
  • 5sql语句的排序字段尽量是索引字段,否则会开辟空间进行结果排序
  • 6 查询语句避免使用*号,使用需要查询的列信息即可。
  • 7 关联查询或者子查询使用小结果集驱动大结果集。

到此这篇关于mysql配置连接参数设置及性能优化的文章就介绍到这了,更多相关mysql配置设置内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql配置连接参数设置及性能优化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL连接数怎么优化和配置

本文小编为大家详细介绍“MySQL连接数怎么优化和配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL连接数怎么优化和配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么
2023-04-22

mysql连接参数怎么配置

要配置MySQL连接参数,需要编辑MySQL的配置文件my.cnf。以下是一些常见的MySQL连接参数配置:1. host:指定要连接的MySQL服务器的主机名或IP地址。2. port:指定要连接的MySQL服务器的端口号。默认为3306
2023-08-24

MySQL连接参数如何配置

MySQL连接参数可以通过以下几种方式进行配置:在命令行中使用参数:可以在命令行中使用参数来配置MySQL连接,例如:mysql -h hostname -u username -p password dbname。在配置文件中使用参数:
MySQL连接参数如何配置
2024-05-13

如何实现MySQL底层优化:连接池的优化与配置参数调整

如何实现MySQL底层优化:连接池的优化与配置参数调整引言MySQL是一种常用的开源数据库管理系统,它的性能直接影响到系统的稳定性和响应速度。而连接池是一种重要的优化手段,可以有效地减少系统连接数据库的开销。本文将介绍如何对MySQL连接池
如何实现MySQL底层优化:连接池的优化与配置参数调整
2023-11-08

影响MySQL性能的配置参数

本文将介绍MySQL参数的五大类设置,平时我们一般都很少碰它们,在进行MySQL性能调优和故障诊断时这些参数还是非常有用的。  (一)连接  连接通常来自Web服务器,下面列出了一些与连接有关的参数,以及该如何设置它们。  1、max_connections 

	影响MySQL性能的配置参数
2015-12-16

tomcat自带连接池dbcp配置以及优化说明

一个网站每天大概有20万的访问量,使用的tomcat自带dbcp连接池,一般网站访问很好,速度也很快,但是过一段时间后,总是报timeout waiting for idle object的异常信息,最后查了apache tomcat的官方
2023-06-02

如何在CentOS上配置和优化MySQL/MariaDB数据库性能

要在CentOS上配置和优化MySQL/MariaDB数据库性能,可以按照以下步骤进行操作:安装MySQL/MariaDB数据库首先需要在CentOS上安装MySQL或MariaDB数据库,可以使用以下命令进行安装:sudo yum in
如何在CentOS上配置和优化MySQL/MariaDB数据库性能
2024-04-25

node.js平台下的mysql数据库配置及连接

首先下载mysql模块包 npm install mysql --save-dev 专门为数据库创建一个模块,放入一个文件中。var mysql=require("mysql"); exports.connect=function(sql,
2022-06-04

【jvm系列-13】jvm性能调优篇---参数设置以及日志分析

JVM系列整体栏目 内容链接地址【一】初识虚拟机与java虚拟机https://blog.csdn.net/zhenghuishengq/article/details/129544460【二】jvm的类加载子系统以及jclasslib的
2023-08-30

编程热搜

目录