热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Mysql性能优化小建议_MySQL

Mysql的性能优化主要参考文章[1],[2],和[3],其中已使用且比较有效果的有:1实用优化(1)禁止autocommit,防止每次插入都提交,刷新logSETautocommit0;SQLimportstatementsCOMM
Mysql的性能优化主要参考文章[1],[2],和[3],其中已使用且比较有效果的有:

1. 实用优化

(1)禁止autocommit, 防止每次插入都提交,刷新log

SET autocommit=0;
... SQL import statements ...
COMMIT;
(2) 对频繁查询的字段建立索引,但要注意加入索引后,执行插入操作时会变慢

(3)当只要一行数据时使用 LIMIT 1

SELECT 1 FROM tbl_name LIMIT 1
注:SELECT 1 是用来查看是否有记录的,并一般用作条件查询(normally it will be used with WHERE and often EXISTS), 返回的所有行的值都是1。效率上来说,1>anycol>*,因为不用查字典表。[4]

(4)永远为每张表设置一个ID
为数据库里的每张表都设置一个ID做为其主键,而且最好的是一个INT型的(推荐使用UNSIGNED),并设置上自动增加的AUTO_INCREMENT标志。

(5)一次插入多行

INSERT INTO yourtable VALUES (1,2), (5,5), ...;

2. 配置优化

下面对Disk I/O和query_cache的优化做一个总结,并假设我们使用的机器内存为8GB。以下的参数都在文件my.cnf的[mysqld]下设置。

(1)innodb_buffer_pool_size 和 innodb_log_file_size

建议设置大小来自文章[5]

#
# Set buffer pool size to 50-80% of your computer's memory
innodb_buffer_pool_size=4G
innodb_additional_mem_pool_size=256M
#
# Set the log file size to about 25% of the buffer pool size
innodb_log_file_size=1G
innodb_log_buffer_size=256M
怎么安全的更改这个配置,来自于[6]

mysql -uroot -p... -e"SET GLOBAL innodb_fast_shutdown = 0"
service mysqld stop
rm -f /var/lib/mysql/ib_logfile[01]
service mysqld start
其中 service mysqld stop是centos下的命令,但ubuntu等其他Linux系统可能实用service mysql stop
(2)query_cache_size

参数的说明见文章[7] ,但并未提到建议大小,反而提到设置太大也会有坏处。本人设置的大小如下:

query_cache_type=1
query_cache_limit=2M
query_cache_size=128M
其中query_chache_type=1表示打开查询缓存,query_cache_size是总的查询缓存大小,query_cahce_limit表示单个查询最大的缓存大小。

设置完之后,执行以下操作便可:

service mysqld restart
(3) innodb_flush_method

innodb_flush_method设置成O_DIRECT还是O_DSYNC,文章[2]中说设置成O_DIRECT会增加性能,但在文章[8]和[2]中这两个参数在实际使用时差不多,并且跟具体使用的硬件相关。所以设置成O_DIRECT是否会优化性能,还不是很确定

(4)max_allowed_packet

此参数是当网络传输数据时,需要控制的参数,如果传输的数据太大(特别是当存在large BLOB columns or long strings数据时),超过max_allowed_packet的上限时,就有可能发生错误,所以就要提高此参数。本人的设置是:

max_allowed_packet = 16M

注:

1. 查看系统变量的一些命令

show variables like 'innodb_buffer%';
SHOW GLOBAL STATUS LIKE '%innodb%';
show global status like 'Qc%';
2. 本人的配置
\
推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
author-avatar
us0569398
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有