sqlserver2000,为啥执行时很慢?仅仅是300条数据。求大神帮助
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver2000,为啥执行时很慢?仅仅是300条数据。求大神帮助相关的知识,希望对你有一定的参考价值。
就是update语句,但是执行select时挺快的
参考技术A 执行慢原因多了 电脑配置,sql优化问题。。。。。。。。。。。 比起select ,update 300条肯定会慢,一条一条更新的是 而select 300条,一下就读出来了 参考技术B 1,加大日志空间 2,优化SQL语句 3,插入或更新操作时禁用索引 速度慢与快是因为缓存的问题,可以再执行一下试试。采纳哦本回答被提问者采纳
MappedByteBuffer 在初始运行时很慢
【中文标题】MappedByteBuffer 在初始运行时很慢【英文标题】:MappedByteBuffer slow on initial run 【发布时间】:2014-03-31 09:07:08 【问题描述】:老读者,第一次发帖。
我在从一组二进制文件中快速读取数据时遇到了一些麻烦。 ByteBuffers 和 MappedBytBuffers 提供了我需要的性能,但它们似乎需要初始运行才能预热。我不确定这是否有意义,所以这里有一些代码:
int BUFFERSIZE = 864;
int DATASIZE = 33663168;
int pos = 0;
// Open File channel to get data
FileChannel channel = new RandomAccessFile(new File(myFile), "r").getChannel();
// Set MappedByteBuffer to read DATASIZE bytes from channel
MappedByteBuffer mbb = channel.map(FileChannel.MapMode.READ_ONLY, pos, DATASIZE);
// Set Endianness
mbb.order(ByteOrder.nativeOrder());
ArrayList<Double> ndt = new ArrayList<Double>();
// Read doubles from MappedByteBuffer, perform conversion and add to arraylist
while (pos < DATASIZE)
xf = mbb.getDouble(pos);
ndt.add(xf * cnst * 1000d + stt);
pos += BUFFERSIZE;
// Return arraylist
return ndt;
所以这需要大约 7 秒才能运行,但如果我再次运行它,它会在 10 毫秒内完成。似乎它需要进行某种初始运行来设置正确的行为。我发现通过做这样简单的事情是可行的:
channel = new RandomAccessFile(new File(mdfFile), "r").getChannel();
ByteBuffer buf = ByteBuffer.allocateDirect(DATASIZE);
channel.read(buf);
channel.close();
这大约需要 2 秒,如果我随后运行 MappedByteBuffer 过程,它会在 10 毫秒内返回数据。我只是不知道如何摆脱初始化步骤并在 10 毫秒内第一次读取数据。我已经阅读了有关“热身”、JIT 和 JVM 的各种内容,但都无济于事。
所以,我的问题是,是否可以立即获得 10 毫秒的性能,还是我需要进行某种初始化?如果是这样,请问最快的方法是什么?
代码旨在运行大约一千个相当大的文件,因此速度非常重要。
非常感谢。
【问题讨论】:
嘿,你确实需要第一次从文件中读取... 哇,真快!谢谢你。关于第一次阅读的最快方法有什么想法吗? 呃,我不知道这是否真的是您问题的答案,但是您可以使用MappedByteBuffer
的.load()
方法将映射加载到内存中;如果你可以在后台.load()
如果你有几个文件要打开,那么你可以赢得时间
另外,至于原始速度,这确实取决于操作系统;我不知道 Windows 是如何做到的,但在 Linux 下,这肯定会调用 .mmap()
【参考方案1】:
我只是不知道如何摆脱初始化步骤并在 10 毫秒内第一次读取数据
你不能。数据确实必须从磁盘中读取。这需要超过 10 毫秒。 10ms 适用于所有其他时间,当它已经在内存中时。
【讨论】:
以上是关于sqlserver2000,为啥执行时很慢?仅仅是300条数据。求大神帮助的主要内容,如果未能解决你的问题,请参考以下文章