为什么已经对表进行分区之后,和没进行分区的普通表查询速度是一样的呢。没有一点效果,在分区的基础上,怎么才能提升查询速度啊,有没有大神帮忙解决一下啊
------解决思路----------------------
最大的瓶颈是硬盘IO,如果只有一个硬盘,分区是无法提升速度的。
只有每个分区都单独一个硬盘,全体查询才有并行的可能。
------解决思路----------------------
脱机,重新附加
------解决思路----------------------
建议认真读下分区的资料,否则疑问很难解得开。当然,这个回复本身是个废话
------解决思路----------------------
首先你的明白分区的特点:
1、分区可以提高可用性。这个可能不容易想到,也就是说一旦分区了,也就是把原来一个物理的表分拆成了若干个物理表,其中如果有一个分区的数据出现了损坏,那么不影响其他分区的数据,这个就是可用性
2、要想通过分区,最大程度提高性能,那么最好的办法是把不同的分区放到不同的物理硬盘上,因为数据库的瓶颈最大的就是IO,通过放到不同硬盘,能在读取数据时,启用并行的IO操作,性能会有较大的提升。
3、如果在查询语句中包含了分区字段,那么可以减少全表扫描,而只需要扫描相应的分区了,如果进一步建立分区索引,可以进一步提高性能,当然前提是只需要查询某个分区中的少了数据。
------解决思路----------------------
所以综上所述,要想通过分区提高性能,需要先看看自己的应用是否符合分区的特性,如果不了解应用的特性,盲目的使用分区,有可能导致性能不升反降
------解决思路----------------------
说道这里,又让我想到了另一个问题。
很多人都说,sql server简单,容易学会,可能一个月就能熟悉sql server了,但是根据我个人的经验,你要精通,可能需要至少2年的时间。
为什么这么说呢?
就从这个分区说起吧,看似这个分区好像挺简单的,百度一下,找找别人分区的实例代码,修改一下,运行一下,分区就建好了,等着性能立马提升吧。
是这样吗?
其实不是这样的,如果只是这样,那只能说你想的太简单了。
这就像,你有一块地,你想种西瓜,于是就开始种西瓜,等着收成,但最后你发现收成很少,为什么呢?
因为你根本不知道你的这块地的特性,就匆忙上马,你也不知道周围的天气情况,实际上根据这些特性,根本不应该种西瓜,而是应该种其他的作物。
反应到分区的问题,其实就是可能要优化性能,没必要采用分区技术,而是采用其他的优化技术,或者说就算是采用分区技术,你也需要在其他方面做出改进,比如,如果周围缺水,那么是否考虑建个储水池,来灌溉西瓜田。