`
上帝之子
  • 浏览: 13210 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL写入优化(转)

阅读更多

转载地址:

http://www.cnblogs.com/whiteyun/archive/2011/12/01/2270132.html 

innodb_buffer_pool_size
如 果用Innodb,那么这是一个重要变量。相对于MyISAM来说,Innodb对于buffer size更敏感。MySIAM可能对于大数据量使用默认的key_buffer_size也还好,但Innodb在大数据量时用默认值就感觉在爬了。 Innodb的缓冲池会缓存数据和索引,所以不需要给系统的缓存留空间,如果只用Innodb,可以把这个值设为内存的70%-80%。和 key_buffer相同,如果数据量比较小也不怎么增加,那么不要把这个值设太高也可以提高内存的使用率。

innodb_additional_pool_size
这个的效果不是很明显,至少是当操作系统能合理分配内存时。但你可能仍需要设成20M或更多一点以看Innodb会分配多少内存做其他用途。

innodb_log_file_size
对于写很多尤其是大数据量时非常重要。要注意,大的文件提供更高的性能,但数据库恢复时会用更多的时间。我一般用64M-512M,具体取决于服务器的空间。

innodb_log_buffer_size
默认值对于多数中等写操作和事务短的运用都是可以的。如 果经常做更新或者使用了很多blob数据,应该增大这个值。但太大了也是浪费内存,因为1秒钟总会 flush(这个词的中文怎么说呢?)一次,所以不需要设到超过1秒的需求。8M-16M一般应该够了。小的运用可以设更小一点。

innodb_flush_log_at_trx_commit (这个很管用)
抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电 池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统 挂了时才可能丢数据。

innodb_flush_log_at_trx_commit

If the value of innodb_flush_log_at_trx_commit is 0, the log buffer is written out to the log file once per second and the flush to disk operation is performed on the log file, but nothing is done at a transaction commit. When the value is 1, the log buffer is written out to the log file at each transaction commit and the flush to disk operation is performed on the log file. When the value is 2, the log buffer is written out to the file at each commit, but the flush to disk operation is not performed on it. However, the flushing on the log file takes place once per second also when the value is 2. Note that the once-per-second flushing is not 100% guaranteed to happen every second, due to process scheduling issues.

The default value of this variable is 1 (prior to MySQL 4.0.13, the default is 0).

A value of 1 is required for ACID compliance. You can achieve better performance by setting the value different from 1, but then you can lose at most one second worth of transactions in a crash. With a value of 0, any mysqldprocess crash can erase the last second of transactions. With a value of 2, then only an operating system crash or a power outage can erase the last second of transactions. However, InnoDB's crash recovery is not affected and thus crash recovery does work regardless of the value.

Note

For the greatest possible durability and consistency in a replication setup using InnoDB with transactions, use innodb_flush_log_at_trx_commit=1, sync_binlog=1, and innodb-safe-binlog in your master server my.cnf file.

Caution

Many operating systems and some disk hardware fool the flush-to-disk operation. They may tellmysqld that the flush has taken place, even though it has not. Then the durability of transactions is not guaranteed even with the setting 1, and in the worst case a power outage can even corrupt theInnoDB database. Using a battery-backed disk cache in the SCSI disk controller or in the disk itself speeds up file flushes, and makes the operation safer. You can also try using the Unix commandhdparm to disable the caching of disk writes in hardware caches, or use some other command specific to the hardware vendor.

 

分享到:
评论

相关推荐

    10倍以上提高Pentaho Kettle的MySQL写入速度

    标题中的“10倍以上提高Pentaho Kettle的MySQL写入速度”指的是通过优化Pentaho Kettle(也称为Kettle或PDI)的数据处理流程,显著提升了将数据导入到MySQL数据库的速度。Pentaho Kettle是一款强大的ETL(提取、转换...

    从 0 开始带你成为MySQL实战优化高手

    【MySQL实战优化高手之路】 MySQL,作为世界上最受欢迎的关系型数据库管理系统之一,对于任何涉及数据库管理、开发或运维的IT专业人士来说,都是一个必备的技能。本资源集合旨在帮助你从零开始,逐步深入理解MySQL...

    mysql性能优化教程.pdf (by caoz)

    - **写入优化**:合理设置innodb_flush_log_at_trx_commit参数以平衡性能和数据安全。 ##### 5.5 运维监控体系 - **监控工具**:使用如MySQL Enterprise Monitor、Percona Monitoring and Management等工具进行全...

    MySQL 5.7 批量写入性能测试对比.docx

    MySQL 5.7 作为一款广泛使用的开源关系数据库管理系统,对批量写入性能的优化至关重要。本篇文章主要探究了在数据交换场景下,如何从表结构、索引、数据形态等方面有效提升批量写入 MySQL 的性能。 一、one_value ...

    mysql 性能优化与架构设计(word版)

    5. 缓存机制:MySQL的查询缓存可以加速重复查询,但可能不适用于高并发写入场景。另外,可以使用外部缓存系统如Memcached或Redis来缓存常用数据。 6. 并行处理:充分利用MySQL的并发执行能力,如通过调整线程池大小...

    Mysql性能优化教程

    MySQL性能优化是数据库管理中的关键任务,旨在提升查询速度、减少资源消耗,从而提高整体系统效率。本教程将深入探讨优化策略,从执行优化、运维优化到架构优化,全面覆盖MySQL性能提升的关键点。 首先,我们来了解...

    MySQL性能优化 SQL优化方法技巧

    ### MySQL性能优化与SQL优化方法技巧 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,其性能优化对于确保应用系统的稳定性和高效运行至关重要。通过对MySQL的优化,不仅能提升系统的响应速度,还...

    2G内存的MYSQL数据库服务器优化

    ### 2G内存的MySQL数据库服务器优化 在IT行业中,对于资源有限的环境进行数据库优化是一项挑战性工作,尤其是在仅有2GB内存的情况下对MySQL数据库服务器进行优化。这种优化旨在提高性能的同时确保系统的稳定运行。 ...

    Mysql性能优化教程.doc

    ### MySQL性能优化教程知识点概述 #### 一、MySQL执行优化 **1.1 背景及目标** - **背景**: 针对已具备一定MySQL使用经验的工程师,特别是适用于高并发、海量数据处理的互联网环境。 - **目标**: 通过对MySQL性能...

    mysql性能优化综述

    ### MySQL性能优化综述 MySQL作为一款广泛使用的开源关系型数据库管理系统,在许多应用场景中都需要针对其性能进行优化。本文将从几个关键方面详细介绍如何优化MySQL的性能。 #### 1. 最底层优化 - **参数优化**:...

    MySQL性能优化的最佳21条经验

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,其性能优化对于任何依赖于它的应用程序来说都是至关重要的。以下是从"MySQL性能优化的最佳21条经验"中提取的一些关键知识点: 1. **索引优化**:索引是提升查询...

    MySQL数据库设计、优化.pptx

    MySQL数据库设计与优化是数据库管理中的重要环节,它关乎到系统的性能、稳定性和可扩展性。本讲座由叶金荣分享,主要涵盖了多个关键方面,包括规范、基础规范、命名规范、库表规范、字段规范、索引规范以及开发环境...

    mysql性能优化视频教程

    ### MySQL性能优化关键知识点 #### 一、MySQL优化思路 MySQL优化主要分为三个层次:SQL语句优化、表结构优化以及服务器配置优化。 1. **SQL语句优化**: - **选择合适的索引**:确保查询时使用的字段被正确索引...

    c#简单实现mysql连接和文件的写入写出

    在C#编程环境中,与MySQL...结合实际项目需求,可以进一步扩展这些基础功能,例如处理事务、使用参数化查询、优化性能等。希望这个教程对你的学习有所帮助,继续探索C#和数据库开发的世界,你的技能将不断得到提升。

    mysql 数据库转 oracle

    2. **数据迁移**:工具需要能够读取MySQL中的数据,并将其按照Oracle的格式写入,同时处理可能出现的兼容性问题。 3. **触发器和存储过程**:如果MySQL数据库中包含触发器和存储过程,迁移工具需要能处理这些复杂...

    MySQL语句优化的原则

    ### MySQL语句优化的核心原则与实践 #### 一、索引的重要性及合理设计 1. **索引的作用**:索引能够显著加快数据检索的速度,这是因为它们提供了快速访问数据库表行的方法,类似于书籍的目录。 2. **非群集索引与...

    mysql性能优化

    MySQL性能优化是数据库管理中的关键环节,它直接影响到应用程序的响应速度和整体系统效率。以下是一些关于MySQL性能优化的重要知识点: 1. **索引优化**:索引是提升查询速度的关键,合理创建主键、唯一索引和普通...

Global site tag (gtag.js) - Google Analytics