最新公告
  • 欢迎您光临极客文库,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • MySQL 单表记录数过大时,数据库的 CRUD 性能会下降,需要如下的一些优化措施 。

    1 )限定数据的范围

    对于大数据茸的数据表,全表扫描肯定是不可接受的 。 务必禁止不带任何限制数据范围条件的查询语句存在。 比如, 当用户查询订单历史数据时,可以控制在最近一个月的数据中进行筛选 。

    2 )读/写分离

    经典的数据库拆分方案主库负责写 ,从库负责读 。

    3 )缓存

    使用 MySQL 的查询缓存 。
    对重量级 、更新少的数据考虑使用应用级别的缓存 。

    4 )垂直分区

    根据数据库里面数据表的相关性进行拆分。 例如,用户表中既有用户的登录信息又有基本信息,可以拆为两个单独的表做分表,甚至放到单独的库做分库 。 垂直分区的优点在于可以使得行数据变小,在查询时减少读取的 Block 数 , 减少 I/O 次数。 此外, 垂直分区可以简化表的结构 , 易于维护 。

    垂直分区的缺点在于主键会出现冗余,需要管理冗余列,并会引起 Join 操作,可以通过在应用层进行 Join 来解决。 此外,垂直分区会让事务管理变得复杂 。

    5 )水平分区

    水平分区指的是保持数据表结构不变,通过某种策略存储数据分片 。 这样每片数据分散到不同的表或者库中,达到了分布式的目的 。 水平分区可以支撑非常大的数据量 。

    如果某个表的数据是时间序列的 ,比如订单 、交易记录等,通常比较适合用时间范围分片 ,因为具有时效性的数据,我们往往更关注其近期的数据,查询条件中一般带有时间字段可以进行过滤 。 可以使用跨度短的时间范围分片活跃数据,跨度长的时间范围分片历史数据 。 此外,订单表包含正在处理和已完成的订单,而正在处理的订单是频繁被访问查 询的,已完成订单则相对来说很少被访问,那么订单状态也可以作为分片的因子,这样可使得频繁访问的正在处理的订单能够保证一个相对小的规模,从而提高处理速度 。 这里分离频繁和不频繁使用的数据也是大表优化的一个原则 。

    需要注意的是 ,分表仅仅解决了单一表数据过大的问题,但由于表的数据还是在同一机器上,其实对于提升 MySQL 并发能力没有什么意义 。 所以水平分区最好分库 。

    水平分区能够支持非常大的数据量存储,应用端的改造也较少,但分片事务难以解决,跨节点 Join 性能差,逻辑复杂 。

    数据库分片主要包括两种分片方案,分别是客户端代理和中间件代理。

    客户端代理

    分片逻辑在应用端,封装在 jar 包中,通过修改或者封装 JDBC 层来实现。 当当网的 Sharding-JDBC 、阿里的TDDL 是目前比较为人所知的实现。

    中间件代理

    在应用和数据中间加了一个代理层 。 分片的逻辑统一维护在中间件服务中 。 间里的Cobar 、 360 的 Atlas 、网易的 DDB 、开源的 MyCat 和 Kingshard 都是这种架构的实现 。

    如非特别必要,不要对数据进行分片,拆分会带来逻辑、部署、运维的各种复杂度 , 一般的数据表在优化得当的情况下支撑千万以下的数据量是没有太大问题的 。 如果实在要分片,尽量选择客户端分片架构,毕竟减少了一次和中间件的网络 1/0 。

    本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
    极客文库 » MySQL大表优化策略

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    极客文库
    程序员的加油站

    2 评论

    Leave a Reply

    Hi, 如果你对这款模板有疑问,可以跟我联系哦!

    联系发布者

    2 评论

    Leave a Reply

    Hi, 如果你对这款模板有疑问,可以跟我联系哦!

    联系发布者
    • 99会员总数(位)
    • 3629资源总数(个)
    • 44本周发布(个)
    • 0 今日发布(个)
    • 105稳定运行(天)

    欢迎加入「极客文库」,成为原创作者从这里开始!

    立即加入 了解更多