我现有一张表,字段有5,用于存储用户访问请求信息,主要有ID(主键,自增),URL,时间,IP;其中URL字段内容长度较长,其余的都比较短;现在该表里有13亿条数据,光是"select count(id) from visit_info;"就需要10分钟,请问有什么好的方案来解决这个问题,服务器是独立的(服务器配置为8CPU,16G内存,硬盘是5T做了RAID的阵列).这个数据表以后需要做很多复杂的查询,按照这个速度绝对不是办法,求大家给个方案,小弟不胜感激啊! 若将数据库做集群该怎么做?大牛们请帮帮忙啊!
1:表设计时,选择正确的字段类型,对varchar这样的,选择长度不要太大方
2:对于count(*) from tablename这样的查询,MYISAM和INNODB不同的实现方式,MYISAM会很快。如果你是ID是严格自增的,那么COUNT(*)=MAX(ID).
3:很多复杂的查询,这样就需要高超的索引技术了。可以尝试进行分区,按照ID做HASH分区。
4:URL字段比较长,可以拆分到另外一个单独的表,用ID和源表关联。