`
izuoyan
  • 浏览: 8962953 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mysql innodb 性能优化

阅读更多
默认情况下,innodb的参数设置的非常小,在生产环境中远远不够用
比如最重要的两个参数
innodb_buffer_pool_size 默认是8M
innodb_flush_logs_at_trx_commit 默认设置的是1 也就是同步刷新log(可以这么理解)

innodb_buffer_pool_size: 这是InnoDB最重要的设置,对InnoDB性能有决定性的影响。默认的设置只有8M,所以默认的数据库设置下面InnoDB性能很差。在只有 InnoDB存储引擎的数据库服务器上面,可以设置60-80%的内存。更精确一点,在内存容量允许的情况下面设置比InnoDB tablespaces大10%的内存大小。

innodb_data_file_path:指定表数据和索引存储的空间,可以是一个或者 多个文件。最后一个数据文件必须是自动扩充的,也只有最后一个文件允许自动扩充。这样,当空间用完后,自动扩充数据文件就会自动增长(以8MB为单位)以 容纳额外的数据。例如: innodb_data_file_path=/disk1 /ibdata1:900M;/disk2/ibdata2:50M:autoextend两个数据文件放在不同的磁盘上。数据首先放在ibdata1 中,当达到900M以后,数据就放在ibdata2中。一旦达到50MB,ibdata2将以8MB为单位自动增长。如果磁盘满了,需要在另外的磁盘上面 增加一个数据文件。

innodb_data_home_dir:放置表空间数据的目录,默认在mysql的数据目录,设置到和MySQL安装文件不同的分区可以提高性能。

innodb_log_file_size:该参数决定了recovery speed。太大的话recovery就会比较慢,太小了影响查询性能,一般取256M可以兼顾性能和recovery的速度

innodb_log_buffer_size:磁盘速度是很慢的,直接将log写道磁盘会影响InnoDB的性能,该参数设定了log buffer的大小,一般4M。如果有大的blob操作,可以适当增大。

innodb_flush_logs_at_trx_commit=2: 该参数设定了事务提交时内存中log信息的处理。

1) =1时,在每个事务提交时,日志缓冲被写到日志文件,对日志文件做到磁盘操作的刷新。Truly ACID。速度慢。
2) =2时,在每个事务提交时,日志缓冲被写到文件,但不对日志文件做到磁盘操作的刷新。只有操作系统崩溃或掉电才会删除最后一秒的事务,不然不会丢失事务。
3) =0时, 日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新。任何mysqld进程的崩溃会删除崩溃前最后一秒的事务

innodb_file_per_table:可以存储每个InnoDB表和它的索引在它自己的文件中。

transaction-isolation=READ-COMITTED: 如果应用程序可以运行在READ-COMMITED隔离级别,做此设定会有一定的性能提升。

innodb_flush_method: 设置InnoDB同步IO的方式:

1) Default – 使用fsync()。
2) O_SYNC 以sync模式打开文件,通常比较慢。
3) O_DIRECT,在Linux上使用Direct IO。可以显著提高速度,特别是在RAID系统上。避免额外的数据复制和double buffering(mysql buffering 和OS buffering)。

innodb_thread_concurrency: InnoDB kernel最大的线程数。

1) 最少设置为(num_disks+num_cpus)*2。
2) 可以通过设置成1000来禁止这个限制

来源:

百里挑一

分享到:
评论

相关推荐

    MYSQL innodb性能优化学习总结

    MYSQL innodb性能优化学习总结,进阶资深DBA可以看看

    MYSQL-innodb性能优化学习总结.pdf

    MYSQL-innodb性能优化学习总结.pdf

    MYSQL-innodb性能优化学习总结[收集].pdf

    MYSQL-innodb性能优化学习总结[收集].pdf

    MySQL性能优化InnoDB buffer pool flush策略

    MySQL性能优化InnoDB buffer pool flush策略

    mysql 性能优化以及面试

    mysql的性能优化,以及mysql的innodb引擎基础面试问题,mysql中级面试

    MySQL优化之InnoDB优化

    InnoDB是为Mysql处理巨大数据量时的最大性能设计。它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。在数据量大的网站或是应用中Innodb是倍受青睐的。那么它就不需要优化了吗,答案很显然:当然不是...

    MySQL高性能优化规范建议

    MySQL高性能优化规范建议 数据库命令规范 数据库基本设计规范 1. 所有表必须使用 Innodb 存储引擎 2. 数据库和表的字符集统一使用 UTF8 3. 所有表和字段都需要添加注释 4. 尽量控制单表数据量的大小,建议控制在 500 ...

    MySQL性能调优与架构设计(中文版)

     第9章 MySQL数据库Schema设计的性能优化  第10章 MySQL Server性能优化  第11章 常用存储引擎优化 第3篇 架构设计篇  第12章 MySQL可扩展设计的基本原则  第13章 可扩展性设计之MySQL Replication  第...

    MySQL批量SQL插入性能优化详解

    经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。 1. 一条SQL语句插入多条数据。 常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) ...

    MySQL实现批量插入以优化性能的教程

    经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。 1. 一条SQL语句插入多条数据。 常用的插入语句如:   INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `...

    MySQL技术内幕InnoDB存储引擎.rar

    《高性能mysql(第3版)》是最具代表性的进阶书籍没有之一,它是 MySQL 领域的经典之作,内容涵盖 MySQL 架构和历史,性能分析,优化,复制、备份和恢复,高可用与高可扩展性。值得每一个后端工程师多次阅读,无论是...

    深入讲解MySQL Innodb索引的原理

    引言 回想四年前,我在学习mysql的索引这块的时候,老师在讲索引的时候,是像下面这么说的 索引就像一本书的目录。而当用户通过索引查找数据时,就好比用户通过目录查询某章节的某个...InnoDB是 MySQL最常用的存储引擎

    浅谈MySQL数据库性能优化

    本文侧重通过优化MySQL 数据库缓存参数如查询缓存,表缓存,日志缓存,索引缓存,innodb缓存,插入缓存,以及连接参数等方式来对MySQL数据库进行优化。  缓存参数  这里先引用一句话,从内存中读取一个数据的...

    mysql5.5-5.6性能调优最优文档

    mysql5.5-5.6InnoDB等详细调优文档

    高性能MySQL(第3版).part2

    3.1性能优化简介67 3.1.1通过性能剖析进行优化69 3.1.2理解性能剖析71 3.2对应用程序进行性能剖析72 3.2.1测量PHP应用程序74 3.3剖析MySQL查询77 3.3.1剖析服务器负载77 3.3.2剖析单条查询81 3.3.3使用性能...

    innodb_performance_optimization_final

    innodb 存储引擎性能优化,mysql 5.6

    MySQL中索引优化distinct语句及distinct的多字段操作

    在一些情况下,MySQL可以使用索引优化DISTINCT操作,但需要活学活用.本文涉及一个不能利用索引完成DISTINCT操作的实例.   实例1 使用索引优化DISTINCT操作 create table m11 (a int, b int, c int, d int, primary ...

    MySQL5.1性能调优与架构设计.mobi

    如MySQL Schema设计的技巧,Query语句的性能优化方式方法及MySQL Server中SQL层和存储引擎层的优化思路。同时还分析了MySQL数据库中主要存储引擎的锁定机制 ●架构设计篇则主要以设计一个高可用可扩展的分布式企业级...

    innodb存储引擎

    mysql性能优化 Innodb存储引擎

Global site tag (gtag.js) - Google Analytics