没有太多的概念。。也没有做过海量的。
好像是可以扩展数据表大小的吧。。不晓得在哪里见过这方面的说明
感觉SELECT语句和索引非常重要了而且很深奥。
特别关注一下。。

解决方案 »

  1.   

    150W就开始变慢了,大概10W数据左右比较快,50W开始慢,100W就能感觉出来慢,100+就开始需要“等待”了
      

  2.   

    这个库表设计不能独立考虑,比如你的访问规则是怎样的  数据的安全性/完整性要求有多高?硬件和网络的条件如何?最重要还是人的因素,你们的DBA素质如何?公司和客户对数据库问题是否重视如果坚持mysql的话(以我的经验,如此海量的数据最好使用oracle或者db2,因为mysql实在没什么优势),那么最好做好拆库拆表和分表。尽量不要把所有的数据都放到一个库的几个表内。拆表是把10列表分为俩个5列表,如ID/NAME/SEX拆为 ID/NAME 和 ID/SEX,这样可以获得更多的pk和负载,但是增加了冗余分表就是把10行表分为俩个5行表,比如把一个表通过ID取模拆成16个表甚至库,那么你的增量就可以缓解到16个positions。如果条件允许,可以通过replication把数据的写入和读取剥离开,进一步减少数据库压力建议把问题描述发到mysql的maillist,那些家伙一看到这种问题,通常都会很兴奋
      

  3.   

    大量数据的话,也需要索引吧
    请问主键(如:newsid)需要添加为索引吗?
      

  4.   

    我本机上SQL SERVER用客户端操作10W就慢死了~
    MYSQL还没有试过那么海量的操作……
      

  5.   

    如果真的一天700W条,那么我坚决建议你使用 Oracle || PostgreSQL。迁移是痛苦的,不迁移痛苦的时间会更长。
      

  6.   

    实在不行就用负载均衡好了多用几台服务器,像Raid那样将数据存储在几个mysql上面
      

  7.   

    恩,我也来说说:P关于数据库的优化,有很多部分,呵呵,硬件升级,参数配置优化,数据库表结构优化,应用实例的优化(菜鸟一个,大家别见怪:P)我就说说数据库表结构设计和应用时优化的一些个人看法吧:P首先说说记录数的问题:    单表有大小限制大家都说了, 另外,单条记录占用空间同样影响这个保证性能的记录数分界点,  再次,建立索引的字段的索引长度也影响着这个数值,  另外,在具体应用中你的查询结果集和实际查询行数也可能决定着这个数值。    举个例子吧,如果有这样一张表 
    tab_name(
        id int(10) unsigned not null auto_increament,
        flag enum('Y','N') not null default 'Y',
        status_a tinyint(1) unsigned not null default '0',
        status_b tinyint(1) unsigned not null default '0',
        type tinyint(3) unsigned not null default '0',
        keyword_a varchar(10) not null,
        keyword_b varchar(15) not null,    
        name varchar(30) not null,    primary key (id)
    )type=myisam
        
      

  8.   

    一下子点击发送了上面的例子中, 如果应用上是主键做索引的操作,那么即使这个表有 1千万 的数据量,也没有问题。而如果你的查询条件是 name like ‘%xxx%’,那么几万条记录速度都会明显变慢。查询范围大了,没办法。呵呵在这方面,影响查询速度的主要是 索引文件大小(用索引的话)和查询搜索的记录集大小(记录数,占用空间大小)。
    呵呵,先说到这里吧,最近累坏了,再加上上火了破相了好困睡觉先:P大家也要注意休息,注意锻炼啊。什么重要? 身体最重要!^_^
      

  9.   

    更正一句话:上面的例子中, 如果应用上是主键做索引的操作,那么即使这个表有 1千万 的数据量,也没有问题
    ---------应该是 上面的例子中, 如果应用上是主键做查询条件的操作,那么即使这个表有 1千万 的数据量,也没有问题  (如 select ... from tab_name where id>100 and id < 200;)
      

  10.   

    那这么说 select count(主键) from table 要比(*)快咯
      

  11.   

    唠叨说的一个表150万条记录,估计跟表的大小有关系,
    比如说只记录日志的表,150万条记录,而表的容量不是太大,基本还是很快的,所以mysql优化,主要结合实际情况~索引和分表是正道~
    但哪些该分,哪些不该分。
      

  12.   

    一直没有注意到又开了新话题1、我说“单表的记录数最好不要大于150万条”只是实际应用中的感受,一般大于百万后就有“慢”的感觉。如果手边没有那么大的数据表或在查询使用了limit子句是不会感觉到这一点的。
    当然,如果你能认真研读一下mysql的源码或许能找到“理论”根据
    2、“我们的数据一天记录的量就700W条”这句话很值得商榷,暂且不去考虑他的真伪
    如果这700W条数据是追加至一张表的话,假定每条记录只有10个字节。那么只要60天,你的数据表就已经达到4G的默认界限了。7,000,000*10*60=4,200,000,000
    10个字节的信息能表示什么呢?
    而这个4G的界限不是mysql规定的,而是操作系统规定的。
    一个无符号长整型数只能表示4G 2^32-1=4,294,967,295
      

  13.   

    to xfni() :
    count(*)最快 :)因为数据库做了优化。具体差别可以查手册。
    to pswdf(小邪):
    呵呵,索引和分表虽然好用,但是就怕乱用阿,呵呵,
    适当的索引以及按列的分表是设计数据库表时必备的基本条件;至于按行的分表,个人觉得很大程度上取决于应用,一般的应用没有必要拆分表。
    to xuzuning(唠叨) :
    呵呵,说句实在话,楼主的700W/天的数据量还是有可能的。:P  就拿我这里的应用来说,目前测试阶段每天的数据量大概是150-200W,平均每行200-300字节(算索引),要求能承受的极限值是每天2-3千万(当然,这也只是说说,不过从实际情况的分析来看1千万是必须的,预计实际情况中平均的数据量会在300-500W间)。呵呵,当然啦,这些数据都只是采集上来未处理的数据,每天存一个表就好,然后做数据挖掘用(好想学学,可惜没我份)。to 楼主:
    楼主的应用还是很值得优化的,在应用上的优化很可能是效果最明显的。首先,选择表类型(myisam),字段类型(适当长度,not null)建表,适当创建索引(可以考虑多字段的索引),根据实际情况分表(楼主对这个表的查询应该不会很复杂吧?如果需要无法用主键做条件限制查询结果集的话,那么速度很可能受到影响的,很可能同一天的数据也需要分表或者这些数据需要加工后写入新的表然后再提供查询);其次,
    在应用的时候,这个表的数据最好不要真实删除,如果需要删除操作,最好采用标记位方式;
    对于查询操作,尽量用主键限制查询范围(如 where id>val_a and id<val_b and .....);
    如果查询条件无法指定主键范围那么尽量使用整型的字段做索引;
    查询条件中条件的排列顺序也有可能影响查询速度(因为sql只能用一个索引做查询条件的索引,所以用产生结果集最小的做为查询索引才是最有效的,可以用explain分析,有时需要强制指定索引);
    如果有关联字段,那么尽量保证相关数据的完整(也就是相关联的数据表尽量不要有真实删除的操作,从而在表关联时使用 join 而不是left join 之类);
    外键字段尽量使用整型而且尽可能的设置为tinyint,smallint;等等中午,吃饭啦。先说到这里。
      

  14.   

    相信Access也上100万记录吗?
    http://www.bhc.com
    有测试所以我觉得MySQL记录千万记录是没有问题,执行上还很可以的。
      

  15.   

    说个搞笑的事情,
    今天下午开了一下午会,结果客户要求我们做到流量40G/s的数据的采集和分析
    混特40G每秒的数据普通的主干网好像都没这个流量
    要求系统有对10T的数据的存储和分析查询的能力
    ^_^,胡说八道。大家当听个笑话了,哈阿
      

  16.   

    楼上说,千万的数据执行还很可以??
    呵呵,这样看怎么用了,如果是日志,查看最新就行的话,当然没有问题。如果是让你 来个xxx like 'xxx%' 都得死~
    如果是like '%xxx%' 那就等着挂吧,^_^
      

  17.   

    所有关系型(含关系对象型)大型数据库管理系统都存在“处理海量数据而导致整体性能急速下滑”的问题,因为目前的行业巨头还在依赖1977年设计的存储引擎为其回报丰厚的利润。随着互联网应用的深入,传统的DB2、Informix、Oracle、SQL Server、Sybase等大型关系数据库管理系统在使用基于上个世纪七十年代硬件环境设计的数据模型处理日益膨胀的海量存储(尤其是地理信息和多媒体数据)业务时,越来越显得力不从心,然而这些巨头们出于商业目的的考虑,不可能重写符合当今应用的底层数据模型,只好拼命丰富各类数据库产品线以维持自己的市场份额,真可谓“八仙过海,各显神通”!目前解决此问题的唯一有效方法是使用“采用组件存储引擎设计的组件型数据库管理系统(以后正是产品可能命名为组件库服务器:COM Server)”,它的原理是高度共享各类数据组件,比对象型数据模型更贴近现实思维。预计2008年04月07日在互联网上提供免费下载,届时计划有UNIX、Linux和Windows版本可供选择。就目前实验室的测试数据表明,该引擎的查询速度在同等软硬件条件下高出Oracle百分之二十点八、高出Sybase百分之三十三点七、高出Informix四十一点九、高出SQL Server百分之六十五点二!欢迎来信索取引擎简介:[email protected]
      

  18.   

    xuzuning(唠叨) ( ) 信誉:739 好强啊,哈哈
      

  19.   

    to mayoryang(静水月) 
    曾经看过一句话,好像说只有几个点的效率的提升算不上理论上的提升.
    所以我感觉,你所说的技术,不一定就是将来要用的数据库技术.我想技术的提升应该还需要其他理论上突破才行.
      

  20.   

    分表还是有道理的,根据数据特征做个hash具体插到那个表里,我单表里抓了300万个网页每条记录可能有20k上下,select非常吃力了
      

  21.   

    你想1千万条记录和1条一样快??
    那是要付出代价的,google查询速度那么快的代价是N台服务器
    总有些人喜欢让mysql干它不擅长的事情你们知道mysql的定位吗?mysql是用来解决什么问题的?
    把mysql当log,抓网页……不是想象力太丰富就是知识太匮乏
      

  22.   

    我也建议有Oracle||PostgreSQL.不然的话痛苦的时间会更长...长痛不如短痛..迁移一下吧.
      

  23.   

    oracle,db2,sql server...也没啥好的。任何一种数据库的开发者不是白痴也不是弱智,它们一般应用下的性能差别是有限的,
    没必要吹捧哪个,大炮能炸死敌人,小枪也一样能杀敌。除非你变态到非要把敌人炸成肉酱,否则有必要那么浪费么。
    很多人,一发现速度慢了,就说:阿,这个不好用了,不能满足需要了,要换,换最好的,拿台银河来,装上最好的数据库, 就能满足需要了。。
    岂不知你的应用是多么垃圾,如果找找应用中的错误,很可能一台赛扬600,128内存的PC一样完成任务。
    干嘛都推崇那些高端的东西。拿大炮打苍蝇很爽么?
    中国目前还不富裕,大多数企业还在起步阶段,很多创业人没那么财大气粗。用点心,多学学,用你所掌握的技术来节省这笔浪费的投入,
    程序员不是干吃饭,只懂得要求这个升级,那个更新的。用有限的资源解决一定范围内的问题才是正理~
      

  24.   

    MYSQL我接触到30w多的数据,在做查询的时候就是很慢了,我用PHPMYADMIN工具把这个表清空用了大约20多秒的时间,不知道有没有办法加快,关注中... ...
      

  25.   

    唉,赶快去找找各个数据库的sql语句分析方法.
    就像mysql中的explain .学会去分析问题,才知道如何解决问题.这个说慢,那个说不慢的。我说 select * from tab_name limit 1;快,咋地?有用么?我说 select * from tab_name limit 300000;慢,有什么意义么?不要把小孩子带坏了。:P(玩笑)