当前位置: 首页 > news >正文

如何优化MySQL数据库?这3个小技巧要知道!

在生活中,相信很多小伙伴都不知道怎么优化MySQL吧,而后台也有一些小伙伴跟我反应这个问题,为此,今日摩杜云就为大家详细的介绍一下,希望大家看完之后有一定的收获。

在对MySQL优化之前,我要警告一下大家:

1、没有两个数据库或者应用程序是完全相同的,这里假设我们要调整的数据库是为一个典型的web网站服务的,优先考虑的是快速查询、良好的用户体验以及处理大量的流量。

2、在你对服务器进行优化之前,请做好数据库备份。

具体优化MySQL的步骤如下:

1、使用InnoDB存储引擎

如果你还在使用MyISAM存储引擎,那么是时候转换到InnoDB了,因为有很多的理由都表明,InnoDB比MyISAM更有优势,如果你关注性能,那么我们来看一下它们是如何利用物理内存的。

1.MyISAM:仅在内存中保存索引。

2.InnoDB:在内存中保存索引和数据。

结论:保存在内存的内容访问速度要比磁盘上的更快。

下面是如何在你的表上去转换存储引擎的命令:
在这里插入图片描述

注意:你已经创建了所有合适的索引,对吗?为了更好的性能,创建索引永远是第一优化考虑的事情。

2、让InnoDB使用所有的内存

你可以在my.cnf文件中编辑你的MySQL配置。使用innodb_buffer_pool_size参数去配置在你的服务器上允许InnoDB使用物理内存数量。

假设你的服务器仅仅运行MySQL,公认的经验法则是设置为你的服务器物理内存的80%。在保证操作系统不适用交换分区而正常运行所需要的足够内存之后,尽可能多的为MySQL分配物理内存。

因此,如果你的服务器物理内存是32GB,可以将那个参数设置为多达25GB。
在这里插入图片描述

注意:如果你的服务器内存较小并且小于1GB,为了适用本文的方法,你应该去升级你的服务器。如果你的服务器内存特别大,比如它有200GB,那么,根据一般常识,你也没有必要为操作系统保留多达40GB的内存。

3、让InnoDB多任务运行

如果服务器上的参数innodb_buffer_pool_size的配置是大于1GB,将根据参数innodb_buffer_pool_instances的设置,将InnoDB的缓冲池分为多个。

拥有多于一个的缓冲池的好处有:在多线程同时访问缓冲池时可能会遇到瓶颈,你可以通过启用多缓冲池来最小化这种争用情况。

对于缓冲池数量的官方建议是:为了实现最佳的效果,要综合考虑innodb_buffer_pool_instances和innodb_buffer_pool_size的设置,以确保每个实例至少有不少于1GB的缓冲池。

因此,在我们的示例中,将参数innodb_buffer_pool_size设置为25GB的拥有32GB物理内存的服务器上。一个合适的设置为25600M/24=1.06GB
在这里插入图片描述

注意:在修改了my.cmf文件后需要重启MySQL才能生效:
在这里插入图片描述

还有更多更科学的方法来优化这些参数,但是这几点可以作为一个通用准则来应用,将使你的MySQL服务器性能更好。

以上就是关于“如何优化MySQL数据库”的相关内容教程,相信大家看完之后有一定的收获吧,如果有不清楚的地方,或者想了解更多相关知识的,可以关注摩杜云,更多干货等你来学习!感谢各位的阅读!

相关文章:

  • 摩杜云:打造“云+数据”新实践,为企业数智化升级注入新功能
  • 决战618!摩杜云爆款秒杀,最低一年3.3元起
  • 网站服务器如何防止被攻击?脚本程序升级很重要!
  • MySQL初始密码忘记了怎么办
  • 教你怎么解决MySQL 5.7及8.0版本数据库的root密码遗忘
  • 摩杜云将出席2021GIDC全球互联网数据大会—上海站!
  • 网站怎么开启CDN加速?最简单的步骤分享!
  • 如何查看网站是否CDN加速?测试网站全国访问速度的方法!
  • 哪里的对象存储好?国内性价比高的云存储推荐!
  • 摩杜云对象存储MOS都有哪些应用场景?
  • 专访丨摩杜云彭一(Roby):云计算和大数据,让城市更有温度
  • 摩杜云:构建数据中台安全,保障企业核心数据安全
  • 如何在MySQL中实现替换字段部分内容
  • redis服务环境下mysql如何实现lnmp架构缓存
  • 进入云存储时代 摩杜云的坚守与创新
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • Apache Pulsar 2.1 重磅发布
  • Centos6.8 使用rpm安装mysql5.7
  • create-react-app项目添加less配置
  • Effective Java 笔记(一)
  • FineReport中如何实现自动滚屏效果
  • JS+CSS实现数字滚动
  • log4j2输出到kafka
  • Making An Indicator With Pure CSS
  • Map集合、散列表、红黑树介绍
  • MySQL用户中的%到底包不包括localhost?
  • Octave 入门
  • swift基础之_对象 实例方法 对象方法。
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 对JS继承的一点思考
  • 给第三方使用接口的 URL 签名实现
  • 入门到放弃node系列之Hello Word篇
  • 原生Ajax
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • elasticsearch-head插件安装
  • Mac 上flink的安装与启动
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • (C)一些题4
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (转) Face-Resources
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET delegate 委托 、 Event 事件
  • .NET MVC之AOP
  • .NET框架
  • .pop ----remove 删除
  • .sys文件乱码_python vscode输出乱码
  • /var/lib/dpkg/lock 锁定问题
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [Bada开发]初步入口函数介绍
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [C++]Leetcode17电话号码的字母组合
  • [CISCN2019 华北赛区 Day1 Web5]CyberPunk --不会编程的崽
  • [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images