mysql数据表太大 需要分表 怎么做最方便管理员登录后台,站长,帖子分表 。注意事项如下:forum_post(主表)必须保留300M的数据 , 帖子分表前一定要先关闭站点,做好数据库备份,期间绝对不能重起服务器或者停止MySQL服务 。
Mysql单表太大,性能受影响求指点这么大的表优化是很痛苦的,看你对数据的用途,如果不经常查询、而是频繁的增加,可以考虑定期(每周或者每日)把表中的数据复制到历史表中,清空工作表的数据,这样插入的效率能大大提高,但是查询的时候需要在两个表中进行查询 。用于频繁插入数据的工作表要尽量少建索引,用于查询的历史表要多建索引 。
MySQL数据库性能优化之分区分表分库分表是分散数据库压力的好方法 。
分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库 。
当然,首先要知道什么情况下,才需要分表 。个人觉得单表记录条数达到百万到千万级别时就要使用分表了 。
分表的分类
**1、纵向分表**
将本来可以在同一个表的内容,人为划分为多个表 。(所谓的本来 , 是指按照关系型数据库的第三范式要求,是应该在同一个表的 。)
分表理由:根据数据的活跃度进行分离,(因为不同活跃的数据,处理方式是不同的)
案例:
对于一个博客系统,文章标题,作者,分类 , 创建时间等,是变化频率慢 , 查询次数多,而且最好有很好的实时性的数据,我们把它叫做冷数据 。而博客的浏览量,回复数等,类似的统计信息 , 或者别的变化频率比较高的数据,我们把它叫做活跃数据 。所以 , 在进行数据库结构设计的时候,就应该考虑分表,首先是纵向分表的处理 。
这样纵向分表后:
首先存储引擎的使用不同,冷数据使用MyIsam 可以有更好的查询数据 。活跃数据,可以使用Innodb ,可以有更好的更新速度 。
其次,对冷数据进行更多的从库配置,因为更多的操作时查询,这样来加快查询速度 。对热数据 , 可以相对有更多的主库的横向分表处理 。
其实,对于一些特殊的活跃数据,也可以考虑使用memcache ,redis之类的缓存 , 等累计到一定量再去更新数据库 。或者mongodb 一类的nosql 数据库,这里只是举例,就先不说这个 。
**2、横向分表**
字面意思 , 就可以看出来,是把大的表结构,横向切割为同样结构的不同表,如,用户信息表,user_1,user_2等 。表结构是完全一样,但是,根据某些特定的规则来划分的表,如根据用户ID来取模划分 。
分表理由:根据数据量的规模来划分 , 保证单表的容量不会太大,从而来保证单表的查询等处理能力 。
案例:同上面的例子,博客系统 。当博客的量达到很大时候,就应该采取横向分割来降低每个单表的压力,来提升性能 。例如博客的冷数据表 , 假如分为100个表,当同时有100万个用户在浏览时,如果是单表的话,会进行100万次请求,而现在分表后,就可能是每个表进行1万个数据的请求(因为,不可能绝对的平均,只是假设),这样压力就降低了很多很多 。
延伸:为什么要分表和分区?
日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表 。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况 , 性能会更加糟糕 。分表和表分区的目的就是减少数据库的负担 , 提高数据库的效率 , 通常点来讲就是提高表的增删改查效率 。
推荐阅读
- 邵阳学新媒体如何选择,学新媒体报什么专业
- oracle查询序列最大数,oracle如何查询序列
- jquery网站收藏,网页链接收藏
- gis九段线,arcgis九段线
- java代码覆盖率是多少 java覆盖equals方法
- 金立用华为鸿蒙,金立刷华为系统
- 区块链支付发票是什么,区块链 发票
- oracle修改表的字段类型,oracle修改表字段类型为varchar
- linux网口打开命令 linux 打开网口