面试题目,这个大表如何设计呢?他说一个通讯录有,3000多万条记录,有好几个大字段,text或者varchar比较长的,总表有50几个字段,问我如何设计表结构,让这个表的dml以及查询操作效果最高。然后还会从移动手机端更新到数据库服务器,如何让同步更新最快?我说我说的是分区分表,他摇了摇头。然后我说建立组合索引,全文检索,他也摇了摇头。然后我再说建立cluster,用集群来操作,他也摇了摇头。
大家你们说该怎么办呢?

解决方案 »

  1.   

    个人答案:
    1:表设计:问我如何设计表结构,让这个表的dml以及查询操作效果最高。这个难,一般来说不从业务角度来说就是将复杂划分为简单,将大表拆分成小表,多个表进行关联,使常用字段在一个表,其它的表通过关联进行扩展,虽然违反第三范式,但是效率可以得到提高,不过这个通常和业务关系紧密。2:调优:好几个大字段,text或者varchar比较长,分别建立单独的表空间,加大读取效率,一次读取数据量,减少IO操作
    DB_block_size 和db_file_multiblock_read_count 设置3:传输:压缩非索引大字段进行存储
      

  2.   

    同意7楼的回复。
    我觉得他想问的也是如果设计表结构,而你得回答是表已经建立好了,进一步调整需要做的事情。所以才会一直摇头。不过,这哥们也够狠,不给一点提示。补充一下7楼,是不是在保存时,就对text字段进行数据压缩,这样数据量会小很多。然后传输时,传递压缩数据,就能节省不少数据流量。我的意思就是,数据压缩以后,再存储,然后传递到服务器上后,如果需要读取,再解压缩。