mysql能不能做延时同步,或者请教一下问题的解决方案。
在爬虫未启动时Mysql基本能满足普通的读写功能,一但启动了爬虫,将大量写入数据,服务器的I/O占用情况达到85%-95%左右。大大的影响了Mysql的查询性能。现将Mysql和Web服务器还有爬虫分开。A,B服务器分别为Mysql的Master和Slave端,使用Mysql-Proxy进行读写分离,Slave端同步Master的数据。爬虫在C服务器上,在启动时将数据直接写入Master端,然后同步至Slave端。这样子分开后,启动爬虫时Slave端还是不乐观,也影响了Slave的查询效率。爬虫是二个小时启动一次,它只写入Master的两个表的数据。请教一下大家怎么处理这样的情况?
本回答由提问者推荐
mysql能不能做延时同步,或者请教一下问题的解决方案。
在爬虫未启动时Mysql基本能满足普通的读写功能,一但启动了爬虫,将大量写入数据,服务器的I/O占用情况达到85%-95%左右。大大的影响了Mysql的查询性能。现将Mysql和Web服务器还有爬虫分开。A,B服务器分别为Mysql的Master和Slave端,使用Mysql-Proxy进行读写分离,Slave端同步Master的数据。爬虫在C服务器上,在启动时将数据直接写入Master端,然后同步至Slave端。这样子分开后,启动爬虫时Slave端还是不乐观,也影响了Slave的查询效率。爬虫是二个小时启动一次,它只写入Master的两个表的数据。请教一下大家怎么处理这样的情况?
本回答由提问者推荐
mysql 怎么实现 waitfor delay 功能
sleep(5) #-- 等待5秒
select * from account where userid=1 for update;
commit;没看懂什么意思?
mysql 事务写入速度很慢,有什么办法能加速?
mysql5的手册中提到,插入一条记录,所需的时间比例大概是:
连接:(3)
发送查询给服务器:(2)
分析查询:(2)
插入记录:(1x记录大小)
插入索引:(1x索引)
关闭:(1)
并且表的大小以logN(B树)的速度减慢索引的插入,因此提高插入速度的方法大概有以下7种:
一个insert语句包含多个value值;
使用insert delayed方法;
使用insert into ...values(select ...from),即select的同时执行insert;
使用load data infile;
先禁掉索引,插入后再创建索引;
写锁表,插入,解锁。原因是索引缓存区仅在所有insert语句完成后才刷新到磁盘上一次;
增加key_buffer_size值来扩大键高速缓冲区。这个要看你用什么“存储引擎”
如果是不支持事务的引擎,如myisam,则是否commit都没有效的。
如果是支持事务的引擎,如innodb,则有系统参数设置是否自动commit,查看参数如下:
mysql> show variables like '%autocommit%';
+---------------+-------+
| variable_name | value |
+---------------+-------+
| autocommit| on|
+---------------+-------+
1 row in set (0.00 sec)
mysql>
显示结果为on表示事务自动提交,也即不用手工去commit。
当然,你可以设置其为off,然后自己手工去commit。