2011-09-28 63 views
7

我仍在为使用InnoDB引擎的MySQL数据库的性能而苦苦挣扎。尤其是数据插入的性能,轻微影响了运行查询的性能。如何为MySQL InnoDB(插入)性能优化?

我一直在搜索信息,how-to's等,但我发现大多数信息相当深刻的问题。我可以在网上找到一些关于“新手”的基本信息,这是性能优化的起点吗? InnoDB优化的第一步,最重要的步骤是用较简单的方式解释。

我使用的是Windows平台

+0

http://www.mysqlperformanceblog.com/2011/03/18/video-the-innodb-storage-engine-for-mysql/ –

+0

Lol @“profound”........... – Pacerier

回答

15

我用来管理几个非常大的MySQL数据库(如,1TB +)。他们是巨大的,不可饶恕的野兽,无尽的食欲引起我的胃病。

我阅读了关于MySQL Performance Tuning和innodb的所有内容。下面是对我有什么帮助的总结:

  1. High Performance MySQL是好的,但只有你到目前为止。
  2. 博客MySQL Performance Blog (this link is to their posts tagged 'innodb')是我在网上找到的最有用的整体资源。他们详细讨论了很多innodb调优问题。有时候它会变得“不稳定”,但总的来说它很棒。这里有另一个关于InnoDB Performance Optimization Basics的链接,这很好。
  3. 我学习它的最后一件主要事情是简单地阅读MySQL文档本身。我读了每个最后的参数是如何工作的,在我的服务器上改变它们,然后做了一些基本的分析。过了一段时间,你可以通过运行大型查询并查看会发生什么来弄清楚什么可行这里有一个良好的开端: InnoDB Performance Tuning and Troubleshooting

最后,它只是试验和贯穿东西的工作,直到你获得足够的知识,知道是什么在起作用。

+0

感谢您的详细解答。我不会与MySQL进行非常广泛的合作,但不幸的是,我没有太多时间来彻底研究所有这些问题,但我现在有一些很好的起点 – waanders

+1

@Kevin,您了解每个设置的工作原理?如果有[622个服务器变量](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html),那怎么可能?并且该列表仅包含[特定于InnoDB]的一些变量(http://stackoverflow.com/a/29539807/632951)。 – Pacerier

+0

我通读了我使用的版本的所有文档。现在是一段时间了,但是有很多。我们在几年的时间里建立了这个。 –

-1

我没有使用“净,我用书。 :)

我用来学习MySQL的书是由Robert Sheldon和Geoff Moes编写的Wrox Press的“Beginning MySQL”。第15章介绍了一些优化的基础知识。我很喜欢这本书,并认为这将是很好的阅读,并且一直是我的第一参考。但它不是特定的存储引擎。

我还有另一本书,apress的Pro MySQL,它涉及到更多关于特定存储引擎的更多细节,但它也很难阅读。尽管如此,仍然很好。

+0

谢谢,也许我必须购买这本书。但对于大多数编程问题,我可以使用网络,应该有一些信息... – waanders

4

对于新手:innodb_flush_log_at_trx_commit = 0,如果您在服务器崩溃的情况下可以承受最多1秒的工作。这是性能与可靠性的权衡,但它会极大地提高您的写入性能。如果您能买得起电池供电的写入缓存,请使用它。

特别是在Windows和写入性能方面,由于MariaDB能够更好地利用Windows上的异步IO,MariaDB 5.3可能比Oracle的库存MySQL更好。我前一段时间写了一个关于它的笔记here,在标准综合基准测试中,它的性能比股票MySQL 5.5好得多(见注释结尾处的图片)。

然而,杀死性能的首要因素是磁盘冲洗。如果您放松使用* innodb_flush_log_at_trx_commit *参数的耐久性,则可以解决这个问题。您也可以考虑使用更大的事务,它们会减少磁盘刷新量。