Magento使用EAV模型,所以对数据库来说,读操作往往比较大,可以使用读写分离技术有效解决这个问题。所谓读写分离,简单来说就是所有写操作,在A服务器上完成,所有写操作到B服务器上完成,A和B服务器实现主从复制。 A和B数据库服务器实现主从复制,MySQL提供了内置支持。可以把读压力水平分解(多个从库)。MySQL主从复制可以参考://www.zuimoban.com/jiaocheng/mysql/2410.html Magento程序本身对读写分离提供了内置支持,可以为每个模块都指定读写适配器,如果没有指定就使用默认的读写适配器,而默认的读写适配器又是使用安装时的适配器。 比如模块名叫eav,那么可以在配置文件中指定eav_write和eav_read适配器,如果没有指定就使用系统默认的default_write和default_read,而default_write和default_read通过use节点指定它实际使用default_setup配置的适配器。 
	# app/etc/local.xml 
	    <global> 
	        <resources> 
	            <db> 
	                <table_prefix><![CDATA[]]></table_prefix> 
	            </db> 
	            <default_setup> 
	                <connection> 
	                    <host><![CDATA[192.168.1.10]]></host> 
	                    <username><![CDATA[magento]]></username> 
	                    <password><![CDATA[root]]></password> 
	                    <dbname><![CDATA[magento]]></dbname> 
	                    <initStatements><![CDATA[SET NAMES utf8]]></initStatements> 
	                    <model><![CDATA[mysql4]]></model> 
	                    <type><![CDATA[pdo_mysql]]></type> 
	                    <pdoType><![CDATA[]]></pdoType> 
	                    <active>1</active> 
	                </connection> 
	            </default_setup> 
	        </resources> 
	    </global> 
	<default_write> 
	    <connection> 
	        <use>default_setup</use> 
	    </connection> 
	</default_write> 
	<default_read> 
	    <connection> 
	        <use>default_setup</use> 
	    </connection> 
	</default_read> 
	默认它使用use节点指定使用default_setup适配器,所以我们修改这两个配置就可以实现读写分离: 
	<default_write> 
	    <connection> 
	        <host><![CDATA[192.168.1.10]]></host> 
	        <username><![CDATA[magento]]></username> 
	        <password><![CDATA[root]]></password> 
	        <dbname><![CDATA[magento]]></dbname> 
	        <initStatements><![CDATA[SET NAMES utf8]]></initStatements> 
	        <model><![CDATA[mysql4]]></model> 
	        <type><![CDATA[pdo_mysql]]></type> 
	        <pdoType><![CDATA[]]></pdoType> 
	        <active>1</active> 
	    </connection> 
	</default_write> 
	<default_read> 
	    <connection> 
	        <host><![CDATA[192.168.1.20]]></host> 
	        <username><![CDATA[magento]]></username> 
	        <password><![CDATA[root]]></password> 
	        <dbname><![CDATA[magento]]></dbname> 
	        <initStatements><![CDATA[SET NAMES utf8]]></initStatements> 
	        <model><![CDATA[mysql4]]></model> 
	        <type><![CDATA[pdo_mysql]]></type> 
	        <pdoType><![CDATA[]]></pdoType> 
	        <active>1</active> 
	    </connection> 
	</default_read> 
读操作全部到达192.168.1.20服务器,写操作全部在192.168.1.10进行。注意,不要在local.xml中修改这个配置。虽然local.xml的配置最优先,但是默认配置有use节点,只要有use节点,就使用use节点的适配器,所以需要在config.xml中直接修改(不要出现use节点)。 每个模块都可以指定自己的读写适配器,如果没有指定就使用默认的配置。这个为读压力的水平分解提供了内置支持。比如某个模块的读操作非常频繁,可以读定向到单独到一个服务器中。通过指定读写适配器,还可以为模块指定使用另一个库等等。 注意,读写分离时,由于采用了MySQL的主从复制,复制的数据库库决不能进行插入更新这种操作(否则可能导致从库无法同步),实际上,程序可能无法百分百保证初始化一个读适配器后不进行更新操作,所以,为了防止这个情况,只给读适配器这个用户Select权限,就能从数据库级别杜绝这个情况发生。 
	  | 


							ecshop紫色综合商城模板|特
							人气:459
						
							绿色保健品仿薄荷ecshop模
							人气:787
						
							Glory外贸商城多维移动化
							人气:235
						
							ecshop综合模板|综合商城程
							人气:634
						
							Dulishop专业性Magento高科技
							人气:134
						
							ecshop逛街模板程序源码
							人气:1359