我需要在Mysql表中保存约78亿条记录.该表既读写又密集.我必须每小时至少保留20亿记录的插入率.而在桌子上搜索不应超过10秒钟.

我们有一个UI,用户可以根据不同的colums属性进行搜索.

大多数搜索查询可以像:
> select * from mytable where prop1 =’sip:100008521149’和
PROP2 = ‘asdsa’
order by event_timestamp desc limit 10;
> select * from mytable where prop1 =’sip:100008521149′
order by event_timestamp desc limit 10;
> select * from mytable where prop2 =’asdsa’
order by event_timestamp desc limit 10;
目前有两个指标:
1- idx_1(prop1,event_timestamp)
2- idx_2(prop2,event_timestamp)
InnoDB设置如下:
innodb_buffer_pool_size = 70G
innodb_log_file_size = 4G
innodb_io_capacity=2000
innodb_io_capacity_max=6000
innodb_lru_scan_depth=2000
innodb_flush_log_at_trx_commit=2
innodb_log_buffer_size=16M
innodb_thread_concurrency = 0
innodb_read_io_threads = 64
innodb_write_io_threads = 64
innodb_autoinc_lock_mode = 2
bulk_insert_buffer_size=33554432
query_cache_type=1
query_cache_size=64M
innodb_flush_neighbors=0
expire_logs_days=10
max-connections=500
long_query_time = 5
read_buffer_size=16M
sort_buffer_size=16M
read_rnd_buffer_size=16M
innodb_doublewrite = 0
innodb_flush_method=O_DIRECT
Machine's RAM size is 99 GB.

一旦启动系统快速,但当记录达到22亿时,性能下降了很多.虽然我们正在使用LOAD INFILE,但插入速度非常慢.搜索在搜索索引参数时相当快.看起来像缓冲池是不够的.

我有几个问题:

>这个配置可以支持这种数据吗?

> 7的理想和实用的缓冲池大小应该是多少?

十亿条记录.

>数据索引大小接近150 GB,只有22亿

记录.看起来我需要有结核病的公羊.

>我们正在考虑Master / Slave配置使congif读取和

在相应的服务器上占优势.

>任何其他更好的方式来设计这个解决方案?

>增加更多的索引使UI搜索更好,但增加单个

一个索引减少插入速度很多折.

UPADTE:1

Q-表比RAM大得多,正确吗? buffer_pool不能做得足够大 – 它必须小于ram,否则性能就会受影响.

A- RAM大小为100 GB,缓冲池为70G.数据量大于RAM.

Q-请提供SHOW CREATE TABLE;有几个问题我需要调查. (数据类型,字段大小等)

A-所有字段都是字符串类型.我们使用了所有的varchar(127). PK是自动生成id bigint(20).

Q- LOAD DATA INFILE中有多少条记录?你直接装入桌子吗? LOAD多久?

每个文件100万条记录.多个线程将数据从CSV文件加载到数据库.在初期移民中,我们必须持续加载,直到达到65亿条记录.那之后,这个频率会在15分钟左右就会减少到周围.

Q-主从:请记住,所有的写操作都在从站上执行.如果你有很多读数,那么多个Slave会传播读数,从而得到一些缩放.

A-我们正在使用MASTER / SLAVE方法进行测试.

我们用MYISAM做MASTER,没有索引. MASTER将用于插入.

具有INNODB和2个索引的SLAVE.搜索将被执行.

两者都是不同的机器,不共享RAM或CPU.

该应用程序在第三台机器上.

Q-你有旋转驱动器吗?还是SSD?

A-如何检查?

Q-你的行似乎相当大.有TEXT还是BLOB?如果是这样,SELECT *可能是一个严重的性能负担.

A-是行有50列,但数据大约在15-20列.我们不能减少数据类型的大小,因为所有字段都可以容纳任何数量的字母数字数据.都是TEXTS没有BLOBS.