Magento是一个复杂的模式和数以百计的表非常数据库为中心的应用,使用一种被称为建筑实体的属性值模型(EAV)。该模型使得Magento的一个非常强大的、可扩展的平台,但是服务器必须处理这些数据库查询优化。大多数人面临的性能问题,事实上是通过缓慢的IO处理和低效的MySQL的配置引起的。
在你的MySQL服务器,打开配置文件my.cnf。
下面我将给我的最重要的参数的建议。如果你不能找到参数已经在您的配置文件,你可以把它下面的[mysqld]部分。
下面提供的数字是基于一个系统与8 GB RAM和CPU核心8。数字可能取决于你的特定的设置有所不同。
查询缓存
query_cache_type = 1
query_cache_size = 64M
也许最重要的是调整参数的查询缓存。 查询缓存中存储的表连同相应的结果被发送到客户端。 如果一个相同的声明是收到后,从服务器检索查询缓存而不是解析和执行语句的结果再次。 如果你可以查询是否已缓存避免大量昂贵的IO操作。这将对磁性能带来很大的影响。
线程缓存大小
thread_cache_size = 16
MySQL使用一个单独的线程的每个客户端连接。 在环境中的应用程序不附加到一个数据库实例的执著,而是创建和关闭大量连接的每一秒,产生新的线程在高速率的过程可能开始消耗显著的CPU资源。 为了减轻这种负面影响,实现 MySQL线程缓存这使得它能够节省,线程,被关闭和重用他们的新的连接。 参数 thread_cache_size 定义了许多未使用的线程可以在任何时候活着。
关键缓冲
key_buffer = 256M
关键缓冲区用于对于MyISAM表缓冲索引块。 它最大限度地减少磁盘I/O的保持最频繁访问的内存中的表块。 如Magento使用InnoDB很多其较重的数据库表,的MyISAM关键缓冲效果有所降低。然而,这是一个好主意,它比默认的高一点。
表缓存
table_cache = 512
MySQL的配置存储器的一部分 表缓存。table_cache有关max_connections。 例如,200并发运行的连接,你应该有一个至少200×N表缓存,其中n是最大数量的表每参加任何查询您执行。
InnoDB的具体设置
innodb_buffer_pool_size = 512M
innodb_thread_concurrency = 8 #等于CPU核心数量
innodb_additional_mem_pool_size = 800
innodb_log_buffer_size = 4M
Magento使其大量的数据库引擎使用InnoDB表。以上是对缓冲区的大小和存储分配使用innodb的一些建议。
通过我们的研究,我们发现这些设置是最重要的Magento MySQL的优化。我是包括一些可值得探讨的同时,与推荐值。
join_buffer_size=2m
max_heap_table_size=16m
tmp_table_size=16m
max_allowed_packet=2m
read_buffer_size=2m
(责任编辑:最模板)