首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL十四:最大2000W行数

转载~ 在互联网技术圈中有一个说法:「MySQL 数据量大于 2000 W行,性能会明显下降」。网传这个说法最早由百度传出,真假不得而知。但是却成为了行业内一个默认标准。...超过2000W行数据一定会导致性能下降吗?我认为是不一定,虽然说建议不超过2000W,但是我不接受它建议可不可以?那必然也是可以。...一、最大到底能存多少数据 先来看看下面这张图,了解一下mysql各个类型大小 我们知道在MySQL是支持主键自增长,不考虑其他因素前提下,理论上只有主键没有用完,数据就可以一直增加。...「主键类型为tinyint时」 主键8位,数据最大为255,Id自增超过255就会报错 「由此可見:MySQL能够存储数据在一定程度上受限与主键类型。...但是数据量大小却跟2000W没啥影响,既然百度大佬推荐最大2000W行数据,那肯定不会是空口白话,一定定会有其他影响行数因素」。

3.6K50
您找到你想要的搜索结果了吗?
是的
没有找到

为什么说MySQL行数不要超过2000w?

作为在后端圈开车多年老司机,是不是经常听到过,“mysql 最好不要超过 2000w”,“超过 2000w 就要考虑数据迁移了”,“你这个数据都马上要到 2000w 了,难怪查询速度慢” 这些名言民语就和...那下面我们就来看看这个建议值 2kw 是怎么来数量限制 首先我们先想想数据库行数最大多大?...建议值 下面我们就以 3 层,2 分叉(实际中是 M 分叉)图例来说明一下查找一个行数过程。...这不是正好就是文章开头说最大行数建议值 2000w 嘛!...索引结构不会影响最大行数,2kw 也只是推荐值,超过了这个值可能会导致 B + 树层级更高,影响查询性能。

51620

MySQL多表查询

1.查询 #查询语法 select from where group by field 分组...#提示:聚合函数聚合是组内容,如果没有分组,默认为一组 1.max() #求最大值 2.min() #求最小值 3.avg() #求平均值 4.sum() #求和 5.count()...发现department中id=203部门在employee中没有对应员工,发现employee中id=6员工在department中没有对应关系 #查看两个交叉连接 mysql> select...employee和department,并且employeeage字段值必须大于25,即找出年龄大于25岁员工以及员工所在部门 mysql> select employee.name,department.name...(2)将查出结果作为临时,再对根据临时dep_id和employeedep_id作为筛选条件将employee和临时进行内连接。

14.5K40

MySQL-操作

分组与聚合函数 分组 在MySQL中,可以使用GROUP BY 根据一个或多个字段进行分组,字段值相同为一组。另外对于分组数据可以使用HAVING进行条件筛选。...; 统计筛选 当对查询数据进行分组操作时,可以利用HAVING 根据条件进行数据筛选,他与前面学习过WHERE功能相同,但是在实际运用时两者有一定区别。...函数名 描述 COUNT() 返回参数字段数量,不统计为NULL记录 SUM() 返回参数字段值和 AVG() 返回参数字段平均值 MAX() 返回参数字段最大值 MIN() 返回参数字段最小值...JSON对象返回 运算符 常用数学函数 运算符 描述 CEIL(x) 返回大于等于x最小整数 FLOOR(x) 返回小于等于x最大整数 FORMAT(x) 返回小数点后保留y位x(进行四舍五入)...0到1之间随机数,包括0和1 比较函数 函数 描述 IN() 比较一个值是否在一组给定集合内 NOT IN() 比较一个值是否不再一组给定集合内 GREATEST() 返回最大一个参数值,至少两个参数

2K10

MySQL&约束&事务

DQL操作 排序 # 通过 ORDER BY 子句,可以将查询出结果进行排序(排序只是显示效果,不会影响真实数据) SELECT 字段名 FROM 名 [WHERE 字段 = 值] ORDER...; SELECT 聚合函数(字段名) FROM 名; 聚合函数 作用 count(字段) 统计指定列不为NULL记录行数 sum(字段) 计算指定列数值和 max(字段) 计算指定列最大值 min...-- sum函数求和, max函数求最大, min函数求最小, avg函数求平均值 SELECT SUM(salary) AS '总薪水', MAX(salary) AS '最高薪水', MIN(salary...MySQL 事务隔离级别 一个数据库可能拥有多个访问客户端,这些客户端都可以并发方式访问数据库. 数据库相同数据可能被多个事务同时访问,如果不采取隔离措施,就会导致各种问题, 破坏数据完整性。...查询得到数据状态不准确,导致幻读 四种隔离级别 隔离级别相关命令 # 查看隔离级别 select @@tx_isolation; # 设置事务隔离级别,需要退出 MySQL 再重新登录才能看到隔离级别的变化

1.2K30

mysql-查询

语法: 一、查询语法    SELECT 字段1,字段2... ...select distinct order by limit 1.找到:from 2.拿着where指定约束条件,去文件/中取出一条条记录 3.将取出一条条记录进行分组group by,如果没有...group by,则整体作为一组 4.将分组结果进行having过滤 5.执行select 6.去重 7.将结果按条件排序:order by 8.限制结果显示条数 创建公司员工字段和数据类型...%小时任意多字符,_表示一个字符 5.逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not 验证结果:where条件约束 1 :条件查询 mysql> select id,name from...#2、分组指的是:将所有记录按照某个相同字段进行归类,比如针对员工信息职位分组,或者按照性别进行分组等 #3、为何要分组呢?

4.3K20

MySQL查询

一、查询语法 SELECT 字段1,字段2......二、关键字执行顺序 1.找到:from 2.拿着where指定约束条件,去文件/中取出一条条记录 3.将取出一条条记录进行分组group by,如果没有group...逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not #1:条件查询 SELECT name FROM employee WHERE post='sale';...#1、首先明确一点:分组发生在where之后,即分组是基于where之后得到记录而进行 #2、分组指的是:将所有记录按照某个相同字段进行归类,比如针对员工信息职位分组,或者按照性别进行分组等...Having发生在分组group by之后,因而Having中可以使用分组字段,无法直接取到其他字段,可以使用聚合函数 mysql> select @@sql_mode; +-------------

4.8K70

mysql源和目标端行数检查

导数据是很长有的事, 导完了总得检查一下把, 云上有DTS很方便, 但是有的环境只能手动导数据了, 这比较就比较麻烦了, 或者是用户自己导, 让你检查检查, 总之检查两个库之间数据量是很常见工作...常见工作做多了就饭, 就写个脚本, py效果更好, 但是不如shell方便(因环境而异). 我分享下脚本检查mysql两库之间数据行数脚本吧....这个脚本是mysql, 也可以改一改给pg或者oracle用, 我就不写了哈 1..../bin/env bash #write by ddcw at 2021.06.26 #检查mysql数据是否一致, 只检查行数量 #用法, sh $0.sh src_user/src_passowrd...'{print $1}')\033[0m" echo -e "一致: ${same_tbale} \t 不一致: ${no_same_tbale}" } init_param # echo

91820

mysql存储量

网上常说mysql2kw就需要考虑分了,但生产中我们也用过2亿,而且毫无压力。所以记录一下为什么2kw就要分是依据什么原理,生产大概要注意什么。...1 存储原理这里只关注B+树存储图片在MySQL中,为了保存内存地址,通常使用6字节来存储指针。...但是一般mysql到了第三层就差不多了,只需要通过3次IO,就可以读取到数据所在叶子结点页。至于提取需要记录,则需要在内存中进行一次条件匹配。2 扩展这里2kw原理就是这样假设前提。...如果是个小,一条数据不够1k,如0.1k,则第三层为2kw*2=2亿,3次IO也是问题。如果就是1k,256亿条以内记录,也就是4次IO,真的有想象中那么不堪吗?不一定!...为了在不同系统上保持兼容性,MySQL选择了6byte作为指针存储长度。用8byte来保存地址,实属有点浪费,因为6字节可以存储地址为:32T。如果真的需要这么大存储空间,估计早就分机器了。

22720

MySQL恢复步骤详解

万幸是,只是写花了,而不是哪位大神在DB里面玩drop table。...虽然已经很久没进行恢复了,但大致步骤都还在脑海中,没花多久就搞定了~ 言归正传,记录一下恢复步骤和关键点,提醒自己也提醒大家。...第四步: 在主库上将写花改名,其目的有二个,其一,停止对这个写入(当然这对业务会有一定影响,会出现一段时间内写入失败报警,需要提前和业务部门联系好),其二,一旦恢复失败,至少还有一个写花存在...最后将这个文件传输到主库服务器上,完成最后恢复操作 ### 可以选择登陆mysql之后 source tablename.sql; ### 也可以在cmd界面 mysql -uusername -...### 快速方法可以按照如下操作,在还原机上命令 mysql -uusername -ppassword -S /tmp/mysql.sock dbname tablename | mysql -uusername

2.2K10

MySQL查询详细解析

一、关键字执行优先级   1,from:找到   2,where:拿着where指定约束条件,去文件/中取出一条条数据   3,group by:将取出一条条数据进行分组,如果没有group...*12,是因为我们通过查询语句查询出来也是一张,但是这个是不是内存当中一个虚拟,并不是我们硬盘中存那个完整,对吧,虚拟是不是也有标题和记录啊, 既然是一个,我们是可以指定这个虚拟标题...*12字段名也是一个别名,只不过不直观,是MySQL自动给你写上   #除了乘法以外,加减乘除都是可以 #自定义显示格式,自己规定查询结果显示格式   CONCAT() 函数用于连接字符串  ...100   3,in(80,90,100)   4,like 'ee%' 模糊匹配,%表示任意多字符,_表示一个字符   5,逻辑运算符:在多个条件直接可以用逻辑运算符 and or not #1:条件查询...每个人都有唯一id号,我count是计算一下分组之后每组有多少id记录,通过这个id记录我就知道每个组有多少人了 关于集合函数,mysql提供了以下几种聚合函数:count、max、min、avg、

2.6K11

MySql系列(1)——查询

2.查询指定字段 SELECT 字段1,字段2,字段3...FROM 名称; 例如查询book书籍名称: select bookName from book; ?...5.带BETWEEN...AND范围查询 SELECT * FROM 名称 WHERE 字段 [NOT] BETWEEN 取值1 AND 取值2; 注意:该查询结果是指在取值1和取值2范围之间,...7.空值查询 SELECT * FROM 名称 WHERE 字段 IS [NOT] NULL;(此处IS不可改为=) 例如查询中年龄为null数据:select * from stu where...8.带AND多条件查询 SELECT * FROM 名称 WHERE 条件表达式1 AND 条件表达式2; 例如要查询中年龄=18并且姓名中含有张三字样数据: select * from stu...9.带OR多条件查询 SELECT * FROM 名称 WHERE 条件表达式1 OR 条件表达式2; 例如要查询中年龄=18或者姓名中含有张三字样数据: select * from stu

2.5K30
领券