• 第一次操刀数据库分表的教训与经验--白干一场


    做完了分表之后,数据库里面的表从8张变成了8000张,我以为谷歌的抓取速度会降低为原来的一半,于是每天看一次谷歌抓取速度,结果实在是太失望了

    image

    结果发现,分完表之后谷歌抓取等待的时间迅速上升了,对mysql不是很了解,查了一下mysql的一些配置信息,我的数据库默认是innodb,

    结果发现innodb默认是把所有的表放在一个文件里面,无论这个数据库里面有多少张表,也想起来sqlserver默认也是吧所有的表放在一个文件里面,

    sqlserver分表的时候自己可以新添加文件组,查了下mysql的配置,mysql 有这么个配置Innodb_file_per_table,不过设置完后必须从新导入一次数据,以后安装mysql得先看看Innodb_file_per_table的配置,以免自增麻烦。

    我以为这样就好了,但是看谷歌抓取时候监控宝的监控记录,发现cpu还是和以前一样高

    image

    cpu高是因为什么呢?

    是因为我分表造成的?

    1:查看mysql 在win下的设置,说一台服务器上的文件句柄数最大为2048个,是不是我分的太多表造成(8000张。。)?-----经验欠缺,先这么着吧

    2:会不会是因为我读取问题列表时候,吧问题的全部内容读取出来了,造成并发高时候,io忙,cpu很忙碌?-------这个有办法加个简介字段

    3:会不会是因为我读取出来内容用正则表达式过滤html,传说正则表达式是高并发下的cpu杀手?--------------这个有办法加个简介字段、过滤html

    给1000张表加字段的问题用博客园园友的分表工具,很轻松就搞定了,

    原来是select * 换成 select 部分字段 PetaPoco 很容易就搞定了

    以前是这么写的

               Page<question> result = learnDAL.learnDB.GetInstance().Page<question>(page, itemsPerPage,
                  @"select 
    *
    from question_home order by addtime desc ", "");    

                                        

    现在这么写

              Page<question> result  = learnDAL.learnDB.GetInstance().Page<question>(page, itemsPerPage,
                    PetaPoco.Sql.Builder.Select(@"
        title, 
    	titlecode, 
    	Brief as content,
    	userid, 
    	siteid, 
    	tagids, 
    	havegoodanswer, 
    	addtime, 
    	tags").From("question_home").OrderBy("addtime desc ")

    发现PetaPoco这种开源的小工具果然是小巧玲珑好掌握

    做完之后上线做个压力测试对比下

    【周五做的50并发和cpu观测】---ps:这个在线并发测试工具,只能免费使用几次,哎。。。。。。。

    image

    image

    周六修改完之后

    100个并发和cpu【ps:最后几个免费金币】

    image

    image

    发现读取列表时候不读取大字段,和不做正则表达式过滤,cpu立马平稳了,

    这次分表完全是白干了一场,还不知道一个mysql库里面放8000张表在win2003下是不是合理,是不是很糟糕,

    求路过的大神指点一下 mysql和sqlserver,在一个数据库库里面放多少张表是合理的?

  • 相关阅读:
    java中子类与父类中隐含的this引用的分析
    c++中基类与派生类中隐含的this指针的分析
    c++中关于初始化型参列表的一些问题
    2014牡丹江网络zoj3816Generalized Palindromic Number(dfs或者bfs)
    2014牡丹江网络赛ZOJPretty Poem(暴力枚举)
    poj1949Chores(建图或者dp)
    poj 1950 Dessert(dfs枚举,模拟运算过程)
    java中自动装箱的问题
    hdu4292Food(最大流Dinic算法)
    codeforces Gargari and Permutations(DAG+BFS)
  • 原文地址:https://www.cnblogs.com/qqloving/p/3427138.html
Copyright © 2020-2023  润新知