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

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,这样在处理字符串就可以边读取边解析。

    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 OpenFOAM多孔介质传热模型建模
  • ¥15 QT 实现 RSTP 语音对讲功能
  • ¥50 AES魔改之后的安全性关于PRF(相关搜索:密码学)
  • ¥15 用C语言写的一个程序遇到了两个问题第一是偏移正确但读取不到坐标,第二个问题是自己定义的函数实现不了获取指定进程模块。
  • ¥15 在安装Anaconda时总是闪退怎么办?
  • ¥15 对图中电路进行以下几个方面的分析
  • ¥15 对图中电路进行以下几个方面的分析
  • ¥15 对图中电路进行以下几个方面的分析
  • ¥15 对图中电路进行以下几个方面的分析
  • ¥500 抖音主页视频预存加载卡bug