1、主要关注插入的性能优化:

1)

在一条insert语句中采用多重纪录插入格式.而且使用load data infile来导入大量数据,这比单纯的indert快好多.

(在MYSQL中具体表现为:INSERT INTO TABLEQ VALUES (),(),...();)
(还有就是在MYISAM表中插入大量记录的时候先禁用到KEYS后面再建立KEYS,具体表现语句:
 ALTER TABLE TABLE1 DISABLE KEYS;ALTER TABLE TABLE1 ENABLE KEYS;
而对于INNNODB 表在插入前先 set autocommit=0;完了后:set autocommit=1;这样效率比较高。)

 

2)

1: 同时插入许多行,一次插入多条数据
2: 从不同连接插入很多行,使用insert delayed语句 ---用延迟插入也可以加快速度,INSERT DELAYED语句加快速度。
3: 用文本文件装载表,然后load,这样通常更快!
4: 锁定表再插入......

3)

日志类的应用,应该很少有update和delete。修改一下参数,让MyISAM引擎并发插入,速度应该会有提升。

4)

日志文件设大点。日志缓存也大点。用以减少日志的磁盘操作。
关闭autocmmit。
INSERT INTO yourtable VALUES (1,2), (5,5), ...; 减少客户端与服务器端的通信开销
将唯一键检查(uniqueness check )关闭,同样的关闭FOREIGN KEY 。 -----唯一键检查关闭,会插入多条相同的数据。
加大buffer pool,插入时减少磁盘 I/O。

5)

数据库的存储格式为MyISAM时,在不使用transaction的前提下,让插入更快.

6) 客户端延迟上报

用户的客户机程序,不是实时上报,缓存一天时间,都写在本地数据文件
  每天由svr端发命令给客户机,指定要把哪些文件上报上来,不接收到命令的话,就不上报。

7)

1,c++ 记日志,并上传日志。
2,表直接用myisam引擎,装mysql5.1 表分区。(分表不要建在同一块硬盘上,如果有条件的话,用用raid)
3,用load 的方式直接入库数据。(一个表中6个字段,5个索引,18分钟可以2.6亿条没问题,包生成索引)
4,扩内存。有条件扩到32G,优化sort,group by。
5,用myisampack来压缩数据库。能节约一半空间。索引不会被压缩。

8)

1、推荐使用InnoDB。
2、关闭外键约束。
3、采用多值插入“INSERT INTO yourtable VALUES (1,2), (5,5), ...;”
4、加大buffer pool 是不错办法。

相关优化配置:
6、 推荐InnoDB的配置(1G内存情况,主要运行mysql服务器):

innodb_buffer_pool_size = 600M
 innodb_additional_mem_pool_size = 64M
 # Set .._log_file_size to 25 % of buffer pool size
 innodb_log_file_size = 256M
 #innodb_log_buffer_size = 8M
 innodb_flush_log_at_trx_commit = 1
 #innodb_lock_wait_timeout = 50
 innodb_file_per_table


其中innodb_flush_log_at_trx_commit和innodb_file_per_table对I/O性能影响最大。