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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 做完了分表之后,数据库里面的表从8张变成了8000张,我以为谷歌的抓取速度会降低为原来的一半,于是每天看一次谷歌抓取速度,结果实在是太失望了 结果发现,分完表之后谷歌抓取等待的时间迅速上升了,对mysql不是很了解,查了一下mysql的一些配置信息,我的数据库默认是innodb, 结果发现i...

做完了分表之后,数据库里面的表从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,在一个数据库库里面放多少张表是合理的?

test
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9月前
|
存储 关系型数据库 MySQL
MySQL数据库的分区和分表技术
MySQL数据库的分区和分表技术
|
11月前
|
存储 算法 关系型数据库
一次数据库分表分库的真实场景应用
一次数据库分表分库的真实场景应用
67 0
|
SQL 存储 算法
SpringBoot整合ShardingSphere实现分表分库&读写分离&读写分离+数据库分表
SpringBoot整合ShardingSphere实现分表分库&读写分离&读写分离+数据库分表
1266 0
SpringBoot整合ShardingSphere实现分表分库&读写分离&读写分离+数据库分表
|
存储 数据库
数据库之分库分表
数据库之分库分表
115 0
数据库之分库分表
|
关系型数据库 MySQL 分布式数据库
Mycat分布式数据库架构解决方案--Mycat实现数据库分表
Mycat分布式数据库架构解决方案--Mycat实现数据库分表
72 0
Mycat分布式数据库架构解决方案--Mycat实现数据库分表
|
SQL 存储 Oracle
Flyway数据库脚本管理工具使用经验
在常见的敏捷开发过程中,迭代的更新频繁出现,每个迭代数据库脚本也经常会更新,为了更好地管理项目中的数据库脚本,下面为大家介绍一款数据库脚本管理工具Flyway,希望对大家有帮助!
1053 1
Flyway数据库脚本管理工具使用经验
|
XML 存储 SQL
深入浅出MySQL(九)一看就懂的基于MYCAT的数据库分表分库案例
深入浅出MySQL(九)一看就懂的基于MYCAT的数据库分表分库案例
154 0
|
存储 SQL 数据管理
|
SQL 关系型数据库 Java
数据库平时错误和使用经验的总结
数据库平时错误和使用经验的总结
101 0
|
存储 关系型数据库 MySQL
MySQL优化系列(五)--数据库存储引擎(主要分析对比InnoDB和MyISAM以及讲述Mrg_Myisam分表)
MySQL优化系列(五)--数据库存储引擎(主要分析对比InnoDB和MyISAM以及讲述Mrg_Myisam分表) 之前一直是使用默认MySQL的InnoDB存储引擎,没有思考过为什么使用,也没思考过其优缺和其他数据库存储引擎。
2268 0