mysql十亿_Mysql:表中有数十亿条记录

我需要在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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值