我一直听到有人想为他们的数据库获得SSD。 但是,不是把他们的桌子放在SSD上,而是常常想把他们的数据库日志放在SSD上,而把他们的桌子放在普通的硬盘上。 但为什么有人想这样做? 日志使用顺序写入。 而SSD的顺序IO速度并不比普通磁盘快。 所以把日志放在SSD上不会带来任何性能上的提升。 SSD比常规磁盘快得多的一个领域是随机IO。 所以不应该做的事情是把你的表放在SSD上,而把日志保留在普通磁盘上? 我错过了什么吗?
当我在SQL Server 2005中执行以下查询时,它使用索引查找,如查看执行计划所validation的那样。 SELECT * FROM Account WHERE Number = '123456789' 但是,当我运行相同的查询,但使用参数,它使用索引扫描。 DECLARE @AccountNumber NVarChar(25) SET @AccountNumber = '123456789' SELECT * FROM Account WHERE Number = @AccountNumber 由于此表有超过1000万行,第二个查询需要30秒以上,而第一个查询只需要几个毫秒。 我真的必须去改变我所有的查询不使用参数?
我在其中一个网站上定期看到高负载平均值。 我有警报设置,但不明显是什么导致高负载,所以我想捕捉警报发生时系统的状态。 捕获相关信息的好方法是什么,这样我可以事后确定是什么原因导致了负载? 这是linux / ubuntu,apache,mod_python / django,mysql。
我有一个HS22刀片,configuration了两个使用板载LSI Logic控制器configuration为RAID1的600GB 10K 6Gbps SAS驱动器。 运行它是VMWare ESXi 4.0u2,最重要的是一对虚拟机。 (是的,我知道我们应该通过SAN提供存储,但是这是一个预算约束)我看到可怜的读/写性能 主机A:RHEL 5.5,8GB RAM,2个vCPU 主机B:CentOS 5.5,1GB内存,2个vCPU 两个内核都configuration为使用elevator=noop启动 在主机A上~8GB dd结果转换为350GB精简configuration磁盘,ext3格式化为: # dd if=/dev/zero of=fullram bs=1K count=8388608 8388608+0 records in 8388608+0 records out 8589934592 bytes (8.6 GB) copied, 467.934 seconds, 18.4 MB/s 我看到的最高写入性能是〜30MB / s(通过vSphere客户端监控) 主机 B〜8GB dd结果转换为40GB精简磁盘,ext3格式化: # dd if=/dev/zero of=fullram bs=1K count=8388608 8388608+0 records in 8388608+0 records […]
我有一个Hyper-V设置,客户操作系统通过内部networking访问主机/父系统。 我注意到“Microsoft虚拟机总线networking适配器”支持Jumbo Packets,默认情况下是禁用的。 在主机和来宾上启用此设置是否可以提高networking活动的性能? 谢谢!
一些理论 我已经在tcp TIME-WAIT ( 这里和那里 )读了一些东西,我读到的是一个设置为2 x MSL (最大段寿命)的值,它在“连接表”中保持连接一段时间保证“在你允许创build与同一个元组的连接之前,所有属于该元组以前化身的数据包都将被删除” 。 由于在连接处于TIME-WAIT或不再存在的情况下,收到的段(除了特定情况下的SYN)将被丢弃,为什么不立即closures连接呢? Q1:这是否是因为在TIME-WAIT (即有性能优势)时处理旧连接中的段所涉及的处理较less而处理较less以在同一元组上创build新连接? 如果上面的解释不成立,我看到TIME-WAIT有用的唯一原因是如果一个客户发送一个连接的SYN ,然后它为同一个元组上的旧连接发送剩余的段,在这种情况下,接收者将重新打开连接,但得到坏段,并将不得不终止它。 Q2:这个分析是否正确? 问题3:使用TIME-WAIT还有其他好处吗? 一些实践 我一直在查看我pipe理的生产服务器上的munin图表。 这里是一个: 正如你所看到的, TIME-WAIT与ESTABLISHED有更多的连接,大部分时间是其中的两倍,在有些情况下是四倍。 问题4:这是否对性能有影响? 问题5:如果是这样,是否明智/build议减lessTIME-WAIT值(以及什么)? Q6:这个TIME-WAIT / ESTABLISHED连接的比例是正常的吗? 这可能与恶意连接尝试有关吗?
我们有许多用于.NET和Java开发和QA的Windows Server虚拟机。 我发现Azure有吸引力的原因很明显,但主要是为了减less在环境维护上花费非生产时间的机会。 在function上,在清理了一些应用程序(许可等)的系统ID问题之后,一切都很好,但是性能有些不足: 在Hyper-V或ESXi上运行时,我们的系统需要花费大约2分钟的时间来构build解决scheme,但Azure A3计算机最多需要花费12分钟来完成相同的构build 。 资源监视器显示大部分时间机器处于IO等待读取磁盘的状态。 有什么我应该做的不同,或者我应该期望在所有情况下本地机器更好的performance?
我正在开发一个经典的开发者系统pipe理员战斗,我声称在共享sql服务器的磁盘上有一个IO问题,而系统pipe理员告诉我这个容量还没有达到。 我能够指出的一点是,SQL服务器上的平均磁盘队列长度非常高。 平均队列长度平均为5,经常峰值为10到15.它永远不会低于2.5 系统pipe理员告诉我,这不是一个问题,因为磁盘是6个磁盘的条带,如果高于主轴的倍数,则队列长度在定义上是不好的。 所以他的公式是6 * 2 = 12,低于平均值5。 他的推理是否正确? 我们可以把一个azure色的磁盘看成一个主轴吗? 最小5的恒定平均队列长度不是一个指示? 编辑:事实certificate,磁盘是一个巨大的瓶颈。 将数据库移动到单独的数据库服务器后,应用程序再次顺利运行。
我假设有以下方法来复制一个NFS共享文件: 过程1: 客户端请求从NFS共享复制数据(如果不存在高速caching),并将数据块asynchronous复制到NFS客户端的内存中,然后将其asynchronous发送到NFS文件pipe理器以复制到新位置。 NFS文件pipe理器在内存中asynchronous接收数据块并将其写入新位置。 在这个过程中,尽pipe在读取和写入的过程中存在networking,但是由于asynchronous读写,一个整体读写操作的延迟将与整个数据的读写操作的延迟相同。 因此,从本地硬盘读取数据并写入NFS几乎与从NFS读取并写入NFS相同。 在第一步中,如果caching已经存在,那么读取可以很快。 过程2: 客户端向NFS服务器发送启动数据复制操作的请求,以及从哪里读取以及写入的位置(看起来不是这样)。 服务器完成剩下的工作,使用它自己的内存进行读写操作。 因此,没有涉及networking。 因此,可以有更好的性能(除非在networking端没有延迟),但可能不是这样。 如果我错了,请在任何时候纠正我的错误。 另外,内存是否涉及到每一个操作,我的意思是当它通过networking发送数据时,数据首先从磁盘发送到内存(数据缓冲区),然后从内存(数据缓冲区)到数据缓冲区(在另一端networking),但不是从数据缓冲区到networking另一端的磁盘吧?
使用固态驱动器(尤其是PostgreSQL数据库)如HP的IO加速器提高数据库性能的体验是什么? 你有没有看到任何显着的改进?