iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL单表数据不要超过500万行的原因是什么
  • 615
分享到

MySQL单表数据不要超过500万行的原因是什么

2024-04-02 19:04:59 615人浏览 独家记忆
摘要

小编给大家分享一下Mysql单表数据不要超过500万行的原因是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!曾经在中国互联网技术圈广为流传着这么一个说法:mysql 单表数据量大于 2

小编给大家分享一下Mysql单表数据不要超过500万行的原因是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

曾经在中国互联网技术圈广为流传着这么一个说法:mysql 单表数据量大于 2000 万行,性能会明显下降。事实上,这个传闻据说最早起源于百度。具体情况大概是这样的,当年的 DBA 测试 Mysql性能时发现,当单表的量在 2000 万行量级的时候,SQL 操作的性能急剧下降,因此,结论由此而来。然后又据说百度的工程师流动到业界的其它公司,也带去了这个信息,所以,就在业界流传开这么一个说法。

再后来,阿里巴巴《Java 开发手册》提出单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。对此,有阿里的黄金铁律支撑,所以,很多人设计大数据存储时,多会以此为标准,进行分表操作。

那么,你觉得这个数值多少才合适呢?为什么不是 300 万行,或者是 800 万行,而是 500 万行?也许你会说这个可能就是阿里的最佳实战的数值吧?那么,问题又来了,这个数值是如何评估出来的呢?稍等片刻,请你小小思考一会儿。

事实上,这个数值和实际记录的条数无关,而与 MySQL 的配置以及机器的硬件有关。因为,MySQL 为了提高性能,会将表的索引装载到内存中。InnoDB buffer size 足够的情况下,其能完成全加载进内存,查询不会有问题。但是,当单表数据库到达某个量级的上限时,导致内存无法存储其索引,使得之后的 SQL 查询会产生磁盘 io,从而导致性能下降。当然,这个还有具体的表结构的设计有关,最终导致的问题都是内存限制。这里,增加硬件配置,可能会带来立竿见影的性能提升哈。

那么,我对于分库分表的观点是,需要结合实际需求,不宜过度设计,在项目一开始不采用分库与分表设计,而是随着业务的增长,在无法继续优化的情况下,再考虑分库与分表提高系统的性能。对此,阿里巴巴《Java 开发手册》补充到:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。那么,回到一开始的问题,你觉得这个数值多少才合适呢?我的建议是,根据自身的机器的情况综合评估,如果心里没有标准,那么暂时以 500 万行作为一个统一的标准,相对而言算是一个比较折中的数值。

我们再来看一下关于SQL书写的一些注意点,会给大家带来帮助

sql的编写需要注意优化

  • 使用limit对查询结果的记录进行限定

  • 避免select *,将需要查找的字段列出来

  • 使用连接(join)来代替子查询

  • 拆分大的delete或insert语句

  • 可通过开启慢查询日志来找出较慢的SQL

  • 不做列运算:SELECT id WHERE age + 1 = 10,任何对列的操作都将导致表扫描,它包括数据库教程函数、计算表达式等等,查询时要尽可能将操作移至等号右边

  • sql语句尽可能简单:一条sql只能在一个cpu运算;大语句拆小语句,减少时间;一条大sql可以堵死整个库

  • OR改写成IN:OR的效率是n级别,IN的效率是log(n)级别,in的个数建议控制在200以内

  • 不用函数和触发器,在应用程序实现

  • 避免%xxx式查询

  • 少用JOIN

  • 使用同类型进行比较,比如用'123'和'123'比,123和123比

  • 尽量避免在WHERE子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描

  • 对于连续数值,使用BETWEEN不用IN:SELECT id FROM t WHERE num BETWEEN 1 AND 5

  • 列表数据不要拿全表,要使用LIMIT来分页,每页数量也不要太大

看完了这篇文章,相信你对“MySQL单表数据不要超过500万行的原因是什么”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网数据库频道,感谢各位的阅读!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL单表数据不要超过500万行的原因是什么

本文链接: https://www.lsjlt.com/news/57701.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL单表数据不要超过500万行的原因是什么
    小编给大家分享一下MySQL单表数据不要超过500万行的原因是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!曾经在中国互联网技术圈广为流传着这么一个说法:MySQL 单表数据量大于 2...
    99+
    2024-04-02
  • 为什么MySQL单表不能超过2000万行?
    最近看到一篇《我说MySQL每张表最好不要超过2000万数据,面试官让我回去等通知》的文章,非常有趣。 文中提到,他朋友在面试的过程中说,自己的工作就是把用户操作信息存到MySQL里,因为数据量超大(5000万条左右),需要每天定时生成3张...
    99+
    2023-08-31
    数据库 GaussDB DBA 原力计划
  • mysql单表千万级数据查询的方法是什么
    在处理千万级数据的单表查询时,可以采取以下方法来提高查询效率: 使用合适的索引:在主键字段和经常用于查询的字段上创建索引,可以加...
    99+
    2024-03-02
    mysql
  • 不要收缩数据库文件的原因是什么
    这篇文章主要为大家展示了“不要收缩数据库文件的原因是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“不要收缩数据库文件的原因是什么”这篇文章吧。关于收缩数据文...
    99+
    2024-04-02
  • mysql索引数据结构要用B+树的原因是什么
    这篇文章主要讲解了“mysql索引数据结构要用B+树的原因是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql索引数据结构要用B+树的原因是什么”吧!1. Hash表?No因考虑到...
    99+
    2023-06-30
  • MySQL中不建议使用Delete删除数据的原因是什么
    今天就跟大家聊聊有关MySQL中不建议使用Delete删除数据的原因是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。InnoDB存储架...
    99+
    2024-04-02
  • vue里data要用return返回数据的原因是什么
    这篇“vue里data要用return返回数据的原因是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一...
    99+
    2024-04-02
  • MySQL数据丢失的原因是什么及怎么解决
    这篇文章主要介绍了MySQL数据丢失的原因是什么及怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL数据丢失的原因是什么及怎么解决文章都会有所收获,下面我们一起来...
    99+
    2023-04-28
    mysql
  • 断电后Redis数据不会丢失的原因是什么
    这篇文章将为大家详细讲解有关断电后Redis数据不会丢失的原因是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言Redis 作为一款内存数据库,被广泛使用于缓存,分布式锁等场景,那么假如断电或者因其...
    99+
    2023-06-20
  • 在mysql数据表视图中不能进行的操作是什么
    小编给大家分享一下在mysql数据表视图中不能进行的操作是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在数据表视图中不能进...
    99+
    2024-04-02
  • mysql数据库恢复单个表的方法是什么
    恢复MySQL数据库中的单个表,可以使用以下方法: 使用备份文件:如果你有数据库的备份文件,可以通过将备份文件中的表导入到现有的...
    99+
    2024-04-09
    mysql
  • MySQL为数据表建立索引的原则是什么
    这篇文章给大家分享的是有关MySQL为数据表建立索引的原则是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。面试题:索引是什么?索引的优点?索引的缺点?在建立索引的时候都有哪些需要考虑的因素呢为数据表建立索引的...
    99+
    2023-06-29
  • MySQL数据库索引选择使用B+树的原因是什么
    这篇文章主要介绍MySQL数据库索引选择使用B+树的原因是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、二叉查找树(1)二叉树简介:二叉查找树也称为有序二叉查找树,满足二叉查...
    99+
    2024-04-02
  • ajax请求返回的数据看不到回调函数的原因是什么
    本篇内容介绍了“ajax请求返回的数据看不到回调函数的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2024-04-02
  • sql数据库启动不了的原因及解决方法是什么
    SQL数据库启动不了的原因及解决方法可能有很多,以下是一些常见的原因及解决方法:1. 数据库服务未启动:检查数据库服务是否已启动,可...
    99+
    2023-09-04
    sql数据库
  • SQL数据库连接不上的原因及解决方法是什么
    SQL数据库连接不上的原因及解决方法可能有以下几种:1. 数据库服务未启动或停止:查看数据库服务是否已启动,如果未启动,需要启动数据...
    99+
    2023-09-22
    SQL数据库
  • php总是连接数据库不成功的原因是什么及怎么解决
    这篇文章主要介绍“php总是连接数据库不成功的原因是什么及怎么解决”,在日常操作中,相信很多人在php总是连接数据库不成功的原因是什么及怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php总是连接数据...
    99+
    2023-07-05
  • MySQL数据库崩溃的常见原因和解决方法是什么
    这篇“MySQL数据库崩溃的常见原因和解决方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL数据库崩溃的常见...
    99+
    2023-07-05
  • MySQL对数据表已有表进行分区表的实现方法是什么
    本篇内容介绍了“MySQL对数据表已有表进行分区表的实现方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!操作方式@1 可以使用ALT...
    99+
    2023-06-25
  • 如果要删除的字符数超过原始字符串中可用的字符数,MySQL INSERT() 函数会返回什么?
    如果要删除的字符数超过原始字符串中可用的字符数,则 MySQL INSERT() 函数将继续删除字符,直到原始字符串末尾。示例mysql> Select INSERT('myteststring',3,15,'...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作