一个WMI模糊查询引发的数据丢失问题
来源:互联网 发布:手机淘宝怎么做详情 编辑:程序博客网 时间:2024/05/16 15:09
WMI查询语句 “SELECT * FROM Win32_ComputerSystem” 是一个看起来很简单的查询,主要用于获取Windows 系统的一些信息,如机器名、处理器数量等。在我们的产品上这个语句使用很久了,一直没问题。最近有个客户报产品在获取数据时,偶尔出现获取不到数据的情况,导致在个别图表上出现空白。经过定位,发现的获取语句“SELECT * FROM Win32_ComputerSystem”的查询结果时,好像一直在遍历着什么东西,可能跟这个查询有关,但这个查询我们在本地已经测试过很多次,每次查询都可以很快返回结果的,而且也没有客户报过有关这个查询的问题。
不过我们还是要验证一下,就让客户在他们的环境上通过wbemtest运行一下“SELECT * FROM Win32_ComputerSystem”,结果发现需要等一两分钟才有结果返回,由此我们断定,在客户环境上,这个查询存在性能问题,可能在获取某些东西的时候需要比较多的时间。
由于我们只需要在这个语句上查询处理器数量,我们在客户环境上,试着运行“SELECT NumberOfProcessors FROM Win32_ComputerSystem”, 这回很快就可以返回结果了。那到底是什么东西在导致那个模糊查询存在性能问题呢?
不过我们还是要验证一下,就让客户在他们的环境上通过wbemtest运行一下“SELECT * FROM Win32_ComputerSystem”,结果发现需要等一两分钟才有结果返回,由此我们断定,在客户环境上,这个查询存在性能问题,可能在获取某些东西的时候需要比较多的时间。
由于我们只需要在这个语句上查询处理器数量,我们在客户环境上,试着运行“SELECT NumberOfProcessors FROM Win32_ComputerSystem”, 这回很快就可以返回结果了。那到底是什么东西在导致那个模糊查询存在性能问题呢?
接着我们检查客户环境,当我们点击“我的电脑->属性”时,发现在弹出窗口有一个定制的图标,平时在我们电脑上是没有看到这个图标的,由于客户的操作系统是跟微软定制,加入了自己公司的logo在里面,这就有点类似我们以前的雨木林风之类的XP系统,在“我的电脑->属性”可以看到这方面的图标,查询了微软的文档https://msdn.microsoft.com/en-us/library/windows/desktop/aa394102%28v=vs.85%29.aspx,发现这个图标对应OEMLogoBitmap这个属性,也就是说把图片信息读取后,转换成uint8类型存储,会不会是这个属性影响的?
OEMLogoBitmap Data type: uint8 array Access type: Read-only Qualifiers: MappingStrings ("WMI")
征得客户同意后,我们从注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation把 logo的值删除,或者把该值所指向的目录的图片改名或删除,对于旧的Xp系统,则把C:\Windows\System32\oemlogo.bmp改名或删除,然后再测试一下,发现客户所报的问题得到解决了。这样问题的根源和解决方法我们都找到了,临时解决方法就是很多把对应的图片改名或删除,最终解决方法就是把那个模糊查询改成指定字段的查询。
通过这个例子也进一步看到,无论是什么查询语句,数据库的还是其它的,能不使用模糊查询就别使用模糊查询。
0 0
- 一个WMI模糊查询引发的数据丢失问题
- Hibernate模糊查询的一个问题
- 模糊查询的问题
- 推荐一个WMI的查询分析器
- 时间模糊查询一个很变态的问题!
- WMI服务最常见的一个问题
- 一个问题引发的思考
- 一个问题引发的笑话
- 一个引用 引发的问题
- 一个问题引发的思考
- 一个空格引发的问题
- 一个printf引发的问题
- 一个索引引发的问题
- 一个子查询引发的血案
- 一个关于模糊查询的写法
- mysql同时使用order by和limit查询时的一个严重隐患 -- 丢失数据
- mysql同时使用order by和limit查询时的一个严重隐患 -- 丢失数据
- LONG的模糊查询的问题
- 池化方法总结(Pooling)
- uilable 上面加子视图图
- 344. Reverse String
- 链表翻转
- Beyond Compare比较表格几个技巧
- 一个WMI模糊查询引发的数据丢失问题
- GPDB的数据倾斜问题
- MySQL主从库配置和主库宕机解决方案
- 谈谈java中的WeakReference
- Conversion to double from cell is not possible.
- 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构
- Android中mesure过程详解
- SwipeMenuListView使用详解
- 编程题中需要注意的问题