`
l4432848
  • 浏览: 255020 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL助理配置

    博客分类:
  • java
阅读更多

基本配置 你需要经常察看以下3个配置项。不然,可能很快就会出问题。

  innodb_buffer_pool_size:这是你安装完InnoDB后第一个应该设置的选项。缓冲池是数据和索引缓存的地方:这个值越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘。典型的值是5-6GB(8GB内存),20-25GB(32GB内存),100-120GB(128GB内存)。

  innodb_log_file_size:这是redo日志的大小。redo日志被用于确保写操作快速而可靠并且在崩溃时恢复。一直到MySQL 5.1,它都难于调整,因为一方面你想让它更大来提高性能,另一方面你想让它更小来使得崩溃后更快恢复。幸运的是从MySQL 5.5之后,崩溃恢复的性能的到了很大提升,这样你就可以同时拥有较高的写入性能和崩溃恢复性能了。一直到MySQL 5.5,redo日志的总尺寸被限定在4GB(默认可以有2个log文件)。这在MySQL 5.6里被提高。

  一开始就把innodb_log_file_size设置成512M(这样有1GB的redo日志)会使你有充裕的写操作空间。如果你知道你的应用程序需要频繁的写入数据并且你使用的时MySQL 5.6,你可以一开始就把它这是成4G。

  max_connections:如果你经常看到‘Too many connections’错误,是因为max_connections的值太低了。这非常常见因为应用程序没有正确的关闭数据库连接,你需要比默认的151连接数更大的值。

  max_connection值被设高了(例如1000或更高)之后一个主要缺陷是当服务器运行1000个或更高的活动事务时会变的没有响应。在应用程序里使用连接池或者在MySQL里使用进程池有助于解决这一问题。

  InnoDB配置

  从MySQL 5.5版本开始,InnoDB就是默认的存储引擎并且它比任何其他存储引擎的使用都要多得多。那也是为什么它需要小心配置的原因。

  innodb_file_per_table:这项设置告知InnoDB是否需要将所有表的数据和索引存放在共享表空间里(innodb_file_per_table = OFF) 或者为每张表的数据单独放在一个.ibd文件(innodb_file_per_table = ON)。每张表一个文件允许你在drop、truncate或者rebuild表时回收磁盘空间。这对于一些高级特性也是有必要的,比如数据压缩。但是它不会带来任何性能收益。你不想让每张表一个文件的主要场景是:有非常多的表(比如10k+)。

  MySQL 5.6中,这个属性默认值是ON,因此大部分情况下你什么都不需要做。对于之前的版本你必须在加载数据之前将这个属性设置为ON,因为它只对新创建的表有影响。

  innodb_flush_log_at_trx_commit:默认值为1,表示InnoDB完全支持ACID特性。当你的主要关注点是数据安全的时候这个值是最合适的,比如在一个主节点上。但是对于磁盘(读写)速度较慢的系统,它会带来很巨大的开销,因为每次将改变flush到redo日志都需要额外的fsyncs。将它的值设置为2会导致不太可靠(unreliable)因为提交的事务仅仅每秒才flush一次到redo日志,但对于一些场景是可以接受的,比如对于主节点的备份节点这个值是可以接受的。如果值为0速度就更快了,但在系统崩溃时可能丢失一些数据:只适用于备份节点。

  innodb_flush_method:这项配置决定了数据和日志写入硬盘的方式。一般来说,如果你有硬件RAID控制器,并且其独立缓存采用write-back机制,并有着电池断电保护,那么应该设置配置为O_DIRECT;否则,大多数情况下应将其设为fdatasync(默认值)。sysbench是一个可以帮助你决定这个选项的好工具。

  innodb_log_buffer_size:这项配置决定了为尚未执行的事务分配的缓存。其默认值(1MB)一般来说已经够用了,但是如果你的事务中包含有二进制大对象或者大文本字段的话,这点缓存很快就会被填满并触发额外的I/O操作。看看Innodb_log_waits状态变量,如果它不是0,增加innodb_log_buffer_size。

  其他设置

  query_cache_size:query cache(查询缓存)是一个众所周知的瓶颈,甚至在并发并不多的时候也是如此。 最佳选项是将其从一开始就停用,设置query_cache_size = 0(现在MySQL 5.6的默认值)并利用其他方法加速查询:优化索引、增加拷贝分散负载或者启用额外的缓存(比如memcache或redis)。如果你已经为你的应用启用了query cache并且还没有发现任何问题,query cache可能对你有用。这是如果你想停用它,那就得小心了。

  log_bin:如果你想让数据库服务器充当主节点的备份节点,那么开启二进制日志是必须的。如果这么做了之后,还别忘了设置server_id为一个唯一的值。就算只有一个服务器,如果你想做基于时间点的数据恢复,这(开启二进制日志)也是很有用的:从你最近的备份中恢复(全量备份),并应用二进制日志中的修改(增量备份)。二进制日志一旦创建就将永久保存。所以如果你不想让磁盘空间耗尽,你可以用 PURGE BINARY LOGS 来清除旧文件,或者设置expire_logs_days 来指定过多少天日志将被自动清除。

  记录二进制日志不是没有开销的,所以如果你在一个非主节点的复制节点上不需要它的话,那么建议关闭这个选项。

  skip_name_resolve:当客户端连接数据库服务器时,服务器会进行主机名解析,并且当DNS很慢时,建立连接也会很慢。因此建议在启动服务器时关闭skip_name_resolve选项而不进行DNS查找。唯一的局限是之后GRANT语句中只能使用IP地址了,因此在添加这项设置到一个已有系统中必须格外小心。

  总结

  当然还有其他的设置可以起作用,取决于你的负载或硬件:在慢内存和快磁盘、高并发和写密集型负载情况下,你将需要特殊的调整。然而这里的目标是使得你可以快速地获得一个稳健的MySQL配置,而不用花费太多时间在调整一些无关紧要的MySQL设置或读文档找出哪些设置对你来说很重要上。

技术分享:www.kaige123.com

0
0
分享到:
评论

相关推荐

    mysql数据库管理

    - **MySQL助理认证(CMA)**:入门级别的认证,适合初学者。 - **MySQL 5.0开发员认证(CMDEV)**:针对MySQL开发者,考核对数据库开发技能的理解和掌握。 - **MySQL 5.0数据库管理员认证(CMDBA)**:侧重于MySQL...

    homeassistant:家庭助理配置

    家庭助理具有家庭自动化的配置。 在示例”页面上精选家庭助理版本:0.114.0概述我利用家庭助手来桥接和自动化我所有的家庭自动化产品。 当我扩展到一些智能灯泡和Wink集线器时,很快就意识到了,没有东西集成到用于...

    微商助理 防伪防窜货溯源代理授权查询系统源码 支持二维码扫码查询

    微商助理防伪防窜货溯源代理授权查询系统源码支持二维码扫码查询 程序架构:PHP+Mysql PHP版本要求PHP5.4以上(推荐PHP5.4) 把源码文件上传到网站根目录,此套系统功能较多,不推荐二级目录安装 安装方法一: 运行 ...

    基于SSM开发班主任助理系统的设计与实现+jsp+mysql+论文(毕业设计).zip

    本项目是一套基于SSM开发班主任助理系统的设计与实现+jsp+mysql+论文(毕业设计).zip,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。包含:项目源码、数据库脚本、项目说明等,有论文...

    homeassistant-config:我的家庭助理配置

    我的家庭助理配置务必 :star: 我的仓库,以便您可以随时了解最新进展! 此回购专为智能家居而设计。 配置,设备和布局应有助于激发您首先进入物联网世界。 这是我的智能家居的实时工作配置。 使用菜单链接在各部分...

    mysql服务器-linux版.rar

    MySQL服务器在Linux环境下的安装与配置是开发人员和系统管理员常用的操作。MySQL是一个关系型数据库管理系统,被广泛应用于各类Web应用程序中,包括员工管理系统。在这个简易的员工管理系统中,我们可能涉及到了...

    VIGI个人助理管理系统 VIGI personalAssistant

    这通常需要设计一套灵活的配置系统,如XML配置文件或者在数据库中存储用户设置。同时,UI/UX设计也至关重要,确保用户能轻松找到并调整设置。 最后,用户管理功能可能包括注册、登录、权限控制等。用户账户的安全性...

    毕业设计-基于SSM++jsp的班主任助理系统设计与实现.zip

    班主任助理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了学生基础数据的管理,班会通知管理,加站管理,住宿管理,...

    Java开发助理个人简历范文.docx

    3. **数据库知识**:掌握Oracle数据库编程,包括SQL和PL/SQL,同时了解SQL Server和MySQL数据库的使用。 4. **操作系统**:能在Windows、Unix/Linux环境下工作,熟悉这些系统的集成开发环境(IDE),如Eclipse或...

    软件实施项目助理岗位职责(说明书).docx

    技能技巧方面,需要熟练的安装配置web服务器,如Tomcat等,在windows与Linux环境下,需要熟悉Linux安装,懂得linux、unix、Aix等系统基本的操作命令,熟悉oracle、mysql等主流数据库的安装、备份、还原,熟悉基础的...

    GPON智能工程助理系统的设计与实现.pdf

    智能工程助理系统将主要包含以下几大功能模块:设备管理模块、业务配置模块、性能监控模块、故障处理模块和数据维护模块。设备管理模块负责OLT和ONT/ONU的设备信息维护;业务配置模块则用于业务数据的自动化生成;...

    基于ssm+jsp班主任助理系统源码数据库.zip

    为了运行这个系统,你需要一个支持Java的服务器(如Tomcat)以及MySQL或类似的数据库来存储数据。在开发环境中,Eclipse或IntelliJ IDEA等IDE可以帮助你管理和调试源码。部署时,需要将项目打包成WAR文件并放入...

    微商助理 防伪防窜货溯源代理授权查询系统源码.zip

    此外,源码的学习和理解涉及到编程语言(如PHP、Java或Python)、前端开发(HTML、CSS、JavaScript)、数据库管理(MySQL、SQL Server等)、服务器配置等相关技能。开发者需要具备良好的编程习惯,遵循软件工程原则...

    AWS亚马逊SAA助理架构师最新题库中文版2019最新4/20

    ### AWS亚马逊SAA助理架构师最新题库知识点详解 #### 题目210: AutoScaling中的实例类型更改 **题目**: 您已经决定为正在使用AutoScaling的应用层中运行的实例更改实例类型。您将在下面的哪个区域更改实例类型定义...

    基于ssm班主任助理系统.zip

    **SpringBoot**是Spring的一个简化版本,它预设了许多默认配置,减少了项目的初始化工作。通过使用SpringBoot,开发者可以快速搭建应用,并且可以很容易地集成其他Spring生态中的组件。 **微信小程序**是该项目的一...

    企业短信助理源代码.zip

    5. **数据库操作**:项目可能使用了如SQL Server、MySQL或其他数据库来存储短信记录,需要了解如何使用ODBC或ADO.NET进行数据库访问。 6. **多线程编程**:为了提高性能和用户体验,短信发送和接收可能是在后台线程...

Global site tag (gtag.js) - Google Analytics