数据库一个表比较大,所以想对该表进行分区。我的计划是对数据库分多个文件组和文件,但都存在一块硬盘的一个分区里(这个服务器只有一块硬盘,一个是C区,一个是D区)
查阅资料上说“若数据库服务器存在多个CPU,则为每个分区分配一个线程,并且分区对应的文件组分别存储在不同物理硬盘中,则每个CPU并行执行查询操作,从而提高效率”。
我想问下,若每个分区存储都是存在一个文件组中,或者多个文件组还是在 一个物理磁盘里,那是不是多个线程还是要串行查询的?
感觉资料上都说得比较笼统,没有事实的图文和理论来证明。
请大侠们帮忙解答下,谢谢!

解决方案 »

  1.   

    一般的磁盘读取I/o是瓶颈,最好还是减少磁盘读取。如果在内存足够大的情况下,增加缓存的大小,可以提高
    数据库的效率的,另外最好把数据库文件.mdf和数据库日志文件.ldf分别放在不同的分区上这样也能提高数据的效率的。
    但数据库文件坚决不好放在系统的磁盘上,另外如果有temp数据文件最好也要单独存放的。
      

  2.   

    答案是不一定。上述观点我就不说了。
    单就你的分区函数的条件而言,如果你不分区条件字段设定的不合适,而在编写SQL的时候不注意分区条件而随便编写的话,效率是要打折扣的。而且有可能比你没有建立分区表和索引的时候更慢
      

  3.   

    1、如果分區表放在一塊硬盤中(一個分區或是多個分區),不會有太大提高,因為讀數據都是要從這塊硬盤來讀。
    2、還要看查詢的語句,如果是:select * from 分區表,那分區比不分區可能還要慢。因為要讀出全部數據,分區表還要合併數據。(此處是指分區表放到一塊硬盤中,如果是放到多塊硬盤中,會快。)
    3、如果有三個分區,分別放到三塊硬盤上,那讀數據時,按分區方法,有可能系統會有三個線程,在三個分區(三塊硬盤)同時讀,理論上說,速度會快三倍。
    4、分區也可以減少索引層數。因為同一分區記錄數變少。
    5、據說,好像如果硬盤做成RAID,會比分區表更好一些。