数据优化

    往往在面试中,一个面试官会问你,数据优化,各种索引,各种字段该用多大空间的问题。感觉上,该面试官,该公司对性能问题很重视,但真实情况真的如此?实际情况却往往并非如此,还大有意外之收获。


1.关于清晰问题
    在你所在公司中可有类似一个数据表中的某个类似USER_TYPE字段,CHAR(1)。是的,表示用户类型的,字段只占用一个字节,貌似很会省资源嘛?然后VARCHAR(10)又能如何?这点性能真的很重要吗?是的,很重要,尽量保证高性能是个好习惯。可是
0  = 管理用户
1 = 前台用户


ADMIN = ADMIN用户
USER = 前台用户

之间哪个清晰,哪个更适合持久开发,哪个更适合后来开发者的快速加入呢?

如果说你很重视性能,那你建立一套对该种字段的维护方式才是上策,不管是文档说明,还是建立一套完整静态类。但是试问能保证这么做的公司有几个?

2.忽略了大性能问题
    做了很多的性能关注,字段占用大小,索引等问题都做了。然而往往很多功能速度慢,奇慢无比。

    比如说一个报表,导出媒体记者数(记者一共也就2000多数据),然后时间消耗达到100多秒,慢,何其之慢。是的,底层的性能问题是保证了,建立索引等等问题做到了。但是看代码,用的hibernate,先查的记者信息,记者对应的人信息,却通过hibernate的关联懒查询加载。这个时候,居然用的懒加载,每条记者懒加载人信息的时候,就是一条SQL,一次IO,2000多次SQL,2000多次IO,性能怎么能提升上去。就算只有20个记者信息,20次SQL,20次IO,也起码要消耗掉2秒时间吧。


总结:
1.字段大小和字段值具有直接查看性,如果选择了字段占用空间小的时候,必须建立文档说明,并且建立完整的静态类来表示每个值的含义。

2.性能除了关注最底层的性能,必须关注其他方面性能,特别是哪些稍微改变下代码,就能让性能成几何成长的代码。

猜你喜欢

转载自liyixing1.iteye.com/blog/1758335