qq_41812457
2018-08-30 15:54
采纳率: 100%
浏览 708
已采纳

Java中大字符串拆分问题

目前的情况是数据库有个blob字段,里边是逗号分隔的一个个数据,
想要取出来用逗号循环取出每个数据,当作条件去另一个表查询,
我想了下因为blob是存的byte,所以取出来了转成了String,但是这个String
我想了下,第一种是再用split转成数组,但是如果按照极限的大小比方说4G来算,
是不是浪费空间;第二种想用String的substring方法,但是substring本质是new String()
会不会更浪费?那如果是在循环中每次substring之后,让字符串引用=null这种释放内存
能不能解决问题? 第三种 想把大字段写到文件,一点一点解析文件这样应该没问题吧,
但是要是高并发的话,又太占IO了,感觉很low。
所以是实在不知道该怎么整。。。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • oyljerry 2018-08-31 01:19
    已采纳

    本身设计上就有点问题,这么大的字段,存到数据库,一般就是只读取等做显示,你这里要做分割,就没有什么特别好的方法来提高性能,一般可以先就用split等分割字符串,然后再看看具体性能瓶颈等在什么地方,然后再想办法优化。

    已采纳该答案
    打赏 评论
  • _zming 2018-08-31 03:15

    你的大字段是一段文本?大字段构造查询寻条件,每个逗号分隔的字段都可能作为查询条件还是,只是部分?

    打赏 评论
  • 葫芦胡 2018-08-31 07:41

    感觉用存储过程好一点吧

    打赏 评论
  • fcfwang_net 2018-08-31 09:50

    字符串的分隔没有想到优化方案,但是分隔后的查询可以使用多线程,应该可以优化一部分

    打赏 评论
  • 孙平平 2018-09-06 07:46

    首先将这么大的字符串放在一个字段里肯定是有问题的,像你说的一个字符串有4G,如果jvm堆内存有8G,两个并发就能内存溢出。
    放在文件系统中更合适,数据库只存储文件的路径或URI,这样在处理字符串就可以边读取边解析。

    打赏 评论

相关推荐 更多相似问题