资讯专栏INFORMATION COLUMN

【MYSQL】大表与大事务带来的问题

fai1017 / 904人阅读

摘要:事务的一致性一致性是指事务将数据库从一种一致性状态转换到另外一种一致性状态,在事务开始之前和事务结束后数据库中数据的完整性没有被破坏。

前言

相对来说,什么情况下的数据库表能够称为“大表”呢?

当一个表的数据超过千万行的时候,就会对数据库造成影响

当表数据文件巨大,表数据文件超过10G(数据值相对硬件而言)

大表的影响
大表对查询的影响

慢查询:很难在一定的时间内过滤出所需要的数据
(Eg:显示订单、来源少、区分度底、大量磁盘IO、降低磁盘效率、慢查询)

大表对DDL操作的影响

1、建立索引需要很长时间

风险:

MYSQL版本 < 5.5 建立索引会锁表
MYSQL版本 >= 5.5 虽然不会锁表但会引起主从延迟

2、修改表结构需要长时间锁表

风险:

会造成长时间的主从延迟
影响正常的数据操作
如何处理数据库中的大表
1、分库分表把一张大表分成多个小表

难点:

分表主键的选择
分表后跨分区数据的查询和统计
2、大表的历史数据归档

优点:

减少对前后端业务的影响

难点:

归档时间点的选择
如何进行归档的操作   
什么是事务?

事务是数据库系统区别于其他一切文件系统的重要特性之一

事务是一组具有原子性的SQL语句,或是一个独立的工作单元

事务要求符合:原子性、一致性、隔离性、持久性

事务的原子性

一个事务必须被视为不可分离的最小工作单位,整个事务中的所有操作要么全部提交成功,要么全部失败,对于一个事务来说,不可能只执行其中的一部分操作。

Eg:
1、检查理财账户中的余额是否高于2000元
2、从理财账户的余额中减去2000元
3、在活动存款账户上增加2000元

整个事务中的所有操作要么全部提交成功,要么全部失败回滚。

事务的一致性

一致性是指事务将数据库从一种一致性状态转换到另外一种一致性状态,在事务开始之前和事务结束后数据库中数据的完整性没有被破坏。

事务的隔离性

隔离性要求一个事务对数据库中数据的修改,在未提交完成之前对于其他事务是不可见的。

SQL标准中定义的四种各类级别(隔离性由低到高)(并发性由高到低)

未提交读(READ UNCOMMITED)
已提交读(READ COMMITED)
可重复读(REPEATABLE READ)
可串行化(SERIALIZABLE)
事务的持久性

一旦事务提交,则其所做的修改就会永远保存到数据库中,此时即使系统崩溃,已经提交的修改数据也不会丢失。

什么是大事务?

运行的时间比较长,操作的数据比较多的事务

风险:

锁定太多的数据,造成大量的阻塞和锁超时
回滚所需要的时间比较长
执行时间长,容易造成主从延迟
如何处理大事务?

避免一次处理太多的数据

移出不必要在事务中的SELECT操作


如果本文对你有所帮助,欢迎关注个人公众号,谢谢。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/48079.html

相关文章

  • mysql - 收藏集 - 掘金

    摘要:步优化以及其它数据库后端掘金原文链接在发表了一篇简洁有效有趣和令人信服的分钟教程描述了如何进行优化。关于的七种后端掘金对于的,在学习起来可能是比较乱的。 5 步优化 MongoDB 以及其它数据库 - 后端 - 掘金原文链接 Jared Rosoff 在 Scale Out Camp 发表了一篇简洁、有效、有趣和令人信服的《8 分钟 MongoDB 教程》描述了如何进行 MongoDB...

    roadtogeek 评论0 收藏0
  • mysql - 收藏集 - 掘金

    摘要:步优化以及其它数据库后端掘金原文链接在发表了一篇简洁有效有趣和令人信服的分钟教程描述了如何进行优化。关于的七种后端掘金对于的,在学习起来可能是比较乱的。 5 步优化 MongoDB 以及其它数据库 - 后端 - 掘金原文链接 Jared Rosoff 在 Scale Out Camp 发表了一篇简洁、有效、有趣和令人信服的《8 分钟 MongoDB 教程》描述了如何进行 MongoDB...

    Donald 评论0 收藏0
  • MySQL数据库规范及解读

    摘要:一基础规范第一条必须使用存储引擎解读支持事务行级锁并发性能更好及内存缓存页优化使得资源利用率更高第二条必须使用字符集解读万国码,无需转码,无乱码风险,节省空间,是的超集,由于近年移动设备的增多,表情以及部分不常见汉字在下会表现为乱码,故需要 一、基础规范 第一条:必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 第二条:必须使...

    Zoom 评论0 收藏0
  • MySQL性能管理及架构设计(一):什么影响了数据库查询速度、什么影响了MySQL性能

    摘要:重启,并重建系统表空间。性能优化顺序从上到下下一篇性能管理及架构设计二数据库结构优化高可用架构设计数据库索引优化参考教学视频实战性能管理及架构设计 一、什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素     showImg(https://segmentfault.com/img/bV5m06?w=427&h=196); 1.2 风险分析 QPS:Queries Pe...

    XiNGRZ 评论0 收藏0
  • Mysql优化原则_小表驱动大表IN和EXISTS合理利用

    摘要:但是对于数据库而言,并不是这样了,我们尽量选择第个循环,也就是小表驱动大表。小表驱动大表即小的数据集驱动大的数据集。这里假设表代表员工表,表代表部门表。当表的数据集必须小于表的数据集时,用优于。要注意的是表与表的字段应该建立索引。 //假设一个for循环 for($i = 0; $i < 10000; $i++) { for ($j = 0; $i < 50; $j++) ...

    Tikitoo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<