汗···
 好象是第一次在mysql版发帖子啊······
  产品基本成型了,使用的mysql数据库,发觉性能方面存在一些问题······
   所以优化是必须做的哈,但是我对mysql还没有达到那么高的境界·········
    这几天请教了一些朋友,也上网找了一些关于优化的资料看了·······
      但是实际动手去做还是不知道该从何下手:(········
        前天看到mysql版的yueliangdao0608都在热心认真的回答网友的问题,而且感觉很厉害的呢····
         不过昨天加你为CSDN的好友并发消息给你米得回应-_-# ·····
          所以特发此帖向您请教关于mysql优化的问题哈········
           其他mysql的高手们也能一起指点偶下吗,感激不尽··········
            :P

解决方案 »

  1.   

    感觉优化不是几句话讲得清楚的吧,比如优化MYSQL的配置文件,建表时不要冗余结构,合适的索引、
    恰当的SQL语句、表间关系、主键、外键、约束、触发器等等方面
    都会影响MYSQL的运行速度。
      

  2.   

    谢谢WWWWA·······
     哈哈·······
      终于有人回复了········感觉优化不是几句话讲得清楚的吧,比如优化MYSQL的配置文件,建表时不要冗余结构,合适的索引、 
    恰当的SQL语句、表间关系、主键、外键、约束、触发器等等方面 
    都会影响MYSQL的运行速度。//我知道不是几句话能讲清楚的哦·····
      我要做的优化表结构不会改动了(头头说的,不是在表结构上去优化)········
       因为之前建的表以及索引等等都还行的······
        语句没有复杂的条件语句,就是数据量大·······PS:优化mysql的配置文件怎么优化呢(我自己也找找资料看看)?
      

  3.   

    那么就简要说明你的情况,机器配置,MYSQL的配置,主要问题,让大家帮你想想方法。
      

  4.   

    恩···
     再次感谢wwwwa·····
       机器配置具体的我不是很清楚,等我问清楚再发上来吧·········
         平台是linux的fc6,mysql是5.1.23的·····
      

  5.   

    主要是MYSQL方面的问题,查询速度慢?
      

  6.   

    我们做的是网络方面的东西········
     在系统跑的整个网络内所有人的上网行为(上网日志)都要入库······
      分为酒店版和高校版,酒店版用户还不多,但是一天下来查询一下日志就很慢了,更别说高校几千人了······
       底层抓包,然后分析协议,按照协议插入数据到不同的表中,大致就这样········
        web端的话是php,没有业务逻辑的,就是显示,查询等······
      

  7.   

    mysql没有分区存储的,所以是否可在日志部分用同一种结构,然后分不同天存储······
     每天一个表,一年才365张表,在界面上也体现日志的时间段概念·····//这个是否可行,具体该怎么做呢?
      

  8.   

    关于数据量的话我说一下······
     一所学校少说也有2000多人········
      然后2000多人上网的所有行为包括浏览网页,聊QQ,游戏,下载,发mail等等等等,都会插入数据库·······
       字段的话有一个日志总表21个字段,还有其他具体的行为日志表,字段一般是15个左右吧·····
      

  9.   

    然后2000多人上网的所有行为包括浏览网页,聊QQ,游戏,下载,发mail等等等等 抓包分析,量太大了,每个TCP session一天下来数据量会很多。你现在性能方面的主要问题是什么?插入速度慢,还是查询速度慢?
        [align=center]====  ====
    [/align]
      

  10.   

    考虑一下partition table来解决了。
        [align=center]====  ====
    [/align]
      

  11.   

    这个问题比较复杂点。
    简单点描述一下吧。
    1、服务器参数配置方面
    见这篇帖子
    http://topic.csdn.net/u/20080105/11/f5b189c8-e308-4561-a68f-98b913a0e3b4.html2、SQL语句方面,最最主要的是建立合适的索引。
    1)、尽量不要用子查询。
    2)、多用内联,不过也得看需求。
    3)、尽量少用临时表或者不用。
    4)、尽量不要用select * from ..形式。
    5)、分页获取结果集。
    6)、分表,分库。
    7)、...
    当然每个小的要点里面包含的东西非常多。多多试验下就知道了。
    对于SQL 语句方面,尽量用
    explain 来分析你的SQL 语句。
      

  12.   

    本帖最后由 xiaoya317 于 2008-05-15 09:26:43 编辑
      

  13.   

    视图对性能不能有任何提高。
    主要是创建视图的SQL 语句的效率。
      

  14.   


    是的,合适的索引、恰当的SQL语句
      

  15.   


    //视图是用在php中的······
      web那块是另一同事做的········
       他写的视图我实在是········
         发一个上来看下?
    DELIMITER $$DROP VIEW IF EXISTS `customdb`.`BBS_AUDIT_VIEW`$$CREATE ALGORITHM=UNDEFINED DEFINER=`suntang`@`%` SQL SECURITY DEFINER VIEW `BBS_AUDIT_VIEW` AS select `ACCESS_INTERNET_LOG`.`ID` AS `ID`,`ACCESS_INTERNET_LOG`.`CERTIFICATE_CODE` AS `CERTIFICATE_CODE`,`ACCESS_INTERNET_LOG`.`CUSTOM_NAME` AS `CUSTOM_NAME`,`ACCESS_INTERNET_LOG`.`NET_ENDING_NAME` AS `NET_ENDING_NAME`,`ACCESS_INTERNET_LOG`.`NET_ENDING_IP` AS `NET_ENDING_IP`,`ACCESS_INTERNET_LOG`.`NET_ENDING_MAC` AS `NET_ENDING_MAC`,date_format(`ACCESS_INTERNET_LOG`.`RECORD_TIME`,_gbk'%Y-%m-%d %H:%i:%s') AS `RECORD_TIME`,`ACCESS_INTERNET_LOG`.`DESTINATION_IP` AS `DESTINATION_IP`,`ACCESS_INTERNET_LOG`.`PORT` AS `PORT`,`ACCESS_INTERNET_LOG`.`SERVICE_TYPE` AS `SERVICE_TYPE`,`ACCESS_INTERNET_LOG`.`CONTENT1` AS `CONTENT1`,`ACCESS_INTERNET_LOG`.`CONTENT2` AS `CONTENT2`,`ACCESS_INTERNET_LOG`.`CONTENT3` AS `CONTENT3`,`ACCESS_INTERNET_LOG`.`ATTRIBUTE1` AS `ATTRIBUTE1`,`ACCESS_INTERNET_LOG`.`ATTRIBUTE3` AS `ATTRIBUTE3`,`ACCESS_INTERNET_LOG`.`ATTRIBUTE4` AS `ATTRIBUTE4`,`ACCESS_INTERNET_LOG`.`ATTRIBUTE5` AS `ATTRIBUTE5`,`ACCESS_INTERNET_LOG`.`ATTRIBUTE6` AS `ATTRIBUTE6`,`ACCESS_INTERNET_LOG`.`ATTRIBUTE7` AS `ATTRIBUTE7`,_utf8'' AS `BBS_KEY`,_utf8'' AS `BBS_TEXT`,_utf8'' AS `TYPE`,_utf8'' AS `BBSID`,_utf8'' AS `TITLE`,_utf8'' AS `USER_NAME`,_utf8'' AS `BBS_URL`,_utf8'a' AS `TABLETYPE` from `ACCESS_INTERNET_LOG` where (`ACCESS_INTERNET_LOG`.`SERVICE_TYPE` = _gbk'0013') union select `BBS_AUDIT`.`ID` AS `ID`,`BBS_AUDIT`.`CERTIFICATE_CODE` AS `CERTIFICATE_CODE`,`BBS_AUDIT`.`CUSTOM_NAME` AS `CUSTOM_NAME`,`BBS_AUDIT`.`NET_ENDING_NAME` AS `NET_ENDING_NAME`,`BBS_AUDIT`.`NET_ENDING_IP` AS `NET_ENDING_IP`,`BBS_AUDIT`.`NET_ENDING_MAC` AS `NET_ENDING_MAC`,date_format(`BBS_AUDIT`.`RECORD_TIME`,_gbk'%Y-%m-%d %H:%i:%s') AS `RECORD_TIME`,`BBS_AUDIT`.`DESTINATION_IP` AS `DESTINATION_IP`,`BBS_AUDIT`.`PORT` AS `PORT`,_utf8'0013' AS `SERVICE_TYPE`,_utf8'' AS `CONTENT1`,_utf8'' AS `CONTENT2`,_utf8'' AS `CONTENT3`,_utf8'' AS `ATTRIBUTE1`,_utf8'' AS `ATTRIBUTE3`,_utf8'' AS `ATTRIBUTE4`,_utf8'' AS `ATTRIBUTE5`,_utf8'' AS `ATTRIBUTE6`,_utf8'' AS `ATTRIBUTE7`,`BBS_AUDIT`.`BBS_KEY` AS `BBS_KEY`,`BBS_AUDIT`.`BBS_TEXT` AS `BBS_TEXT`,`BBS_AUDIT`.`TYPE` AS `TYPE`,`BBS_AUDIT`.`BBSID` AS `BBSID`,`BBS_AUDIT`.`TITLE` AS `TITLE`,`BBS_AUDIT`.`USER_NAME` AS `USER_NAME`,`BBS_AUDIT`.`BBS_URL` AS `BBS_URL`,_utf8'b' AS `TABLETYPE` from `BBS_AUDIT`$$DELIMITER ;
      

  16.   

    说一下机器的配置哈········酒店版····处理器  Pentium M 1.73GHz
    内存 512M
    硬盘 80G
    网卡 2个100M/1000M以太网卡+1个100M以太网卡
    外形尺寸(深×宽×高)  355 mm×430 mm×42 mm 
    机架 1U 机架式
    重量 7.5KG
    固定接口 1 个RS232口
    设备管理 Telnet,SSH
    安全标准 CCC/IEC60 950/UL1950-CSA 950
    直流电源 200W节能服务器专用电源
    交流电压/频率 100~240V/50~59MHz
    噪声 "环境温<28°C,声强为6.2BA的运行模式中,
    侧位声压<40dBA"
    相对湿度 非运行时 95%,于25°C至30°C温度下不凝结
    环境温度 "运行时 10°C至35°C
    非运行时 –40°C至+70°C周围环境"
    高校版····配置参数 指标
    处理器  至强Xeon Dual-core 1.86 GHz
    内存 1G
    硬盘 160G
    硬盘扩展架 4个硬盘扩展架
    网卡 2个千兆高速以太网服务器卡
    外形尺寸(深×宽×高)  640 mm×430 mm×88 mm 
    机架 2U 机架式
    重量 20KG
    固定接口 1 个RS232口
    设备管理 Telnet,SSH
    安全标准 CCC/IEC60 950/UL1950-CSA 950
    直流电源 300W服务器专用电源
    交流电压/频率 90~264V/47~63Hz
    噪声 "环境温<28°C,声强为6.2BA的运行模式中,
    侧位声压<50dBA"
    相对湿度 非运行时 95%,于25°C至30°C温度下不凝结
    环境温度 "运行时 10°C至35°C
    非运行时 –40°C至+70°C周围环境"
      

  17.   

    CPU速度慢了点,内存尽可能大一些,4G,磁盘阵列、双机热备份准备没有?
      

  18.   

    另,服务器最好用企业级的,UPS要配备
      

  19.   

    服务器最好用双CPU,内存尽可能大一些4-8G,既然表结构不能更改,只有在硬件上下点功夫了
      

  20.   

    学习不少。Mark
    一个三角就可以丢三百分呀,呵呵
      

  21.   

    你的那个视图。你把EXPLAIN的结果发上来就可以了。
      

  22.   

    关于分区。我之前写过的一篇文章
    http://www.cyhd.net/programdesign/2008/0327/article_256.html过几天我把它移到CSDN博客上来。
      

  23.   


    哇·····
      再次感谢······
       刚google了一下,看了一些分区的资料········
         :P
      

  24.   

    想办法把type 为ALL的变一下。都没有用到索引。
      

  25.   

    本帖最后由 xiaoya317 于 2008-05-16 10:52:05 编辑
      

  26.   


    当然可以,
    去GOOLGE 下 mysql range分区。
      

  27.   

    http://blog.vsharing.com/zwj/A681542.html
    MYSQL分区介绍
      

  28.   

    MySql性能方面yueliangdao0608是专家。我说说非数据库方面 
    “在系统跑的整个网络内所有人的上网行为(上网日志)都要入库······ ”以前看到有人做过类似的东西,感觉数据量非常大是导致性能下降的主要原因。
    所以建议这样:
    在1分钟(此时间也设置)内的操作行为应该不要重复写入数据库。
    即在每个客户端有一个内存表,内是当前所有操作行为,每隔多长时间(可设置)读一下当前所有操作,
    写入内存表中,直到每个操作结束了,再将每个操作的的开始和结束写入,这样每个操作只有2条记录。关于建表,应该区分:本地办公行为、本地非办公行为及上网办公行为、上网非办公行为等,分别不同标志,以便查询分析时统计每个人的工作行为和非工作行为比例等。也就是有个表,需要定义那些关键字是:本地办公行为和上网办公行为。
      

  29.   


    再请教一下啊各位高手·····
     我这个是一个统计页面,现在写的sql是根本没法打开这个页面的,一打开就死掉···
       原因是数据量大,每一个0代表一条sql语句去查询统计,这样非常的不合理·····
         我现在想的办法是再建一个统计表,把这些数据都写到统计表中,然后统计页面直接去查询统计表····
          我想请问的是还有什么更好的方法吗?能给点建议吗?