02.07 Day 19 - 重温 Day 10

2024-02-04 09:08
文章标签 day 19 重温 02.07

本文主要是介绍02.07 Day 19 - 重温 Day 10,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家好,我是 Snow Hide,作为《MySQL 实战》这个专栏的学员之一,这是我打卡的第 19 天,也是我第 73 次进行这种操作。

今天我温习了该专栏里一篇叫《count(*)这么慢,我该怎么办?》的文章。

关键词总结:count(*) 的实现方式(MyISAM、InnoDB、不支持事务、不准确、性能问题)、用缓存系统保存计数、在数据库保存计数、不同的 count 用法(count(主键 id)、count(1)、count(字段)、count(*)、按效率排列)。

 

所学总结:

 

count(*) 的实现方式

MyISAM

把表的总行数存储在磁盘上,执行 count(*) 是会直接返回统计,效率很高。

InnoDB

执行 count(*) 时需要把数据逐行地从引擎里读出再累加。

不支持事务

MyIASM 表很快但不支持事务。

不准确

show table status 命令虽然很快,但不准确。

性能问题

InnoDB 表会遍历全表,结果准确但性能不佳。
 

用缓存系统保存计数

统计数据会有丢失以及不精确的问题。
 

在数据库保存计数

通过事务来确保逻辑上是一致的。
 

不同的 count 用法

count(主键 id)

InnoDB 遍历整张表,将 id 的值都取出返回给 server 层。server 层判断 id 后判断不可能为空就按行累加。

count(1)

InnoDB 遍历整张表但不取值。server 层将数字 “1” 放入返回的行,随后判断是不可能为空按行累加。

count(字段)

  • 如果字段不允许 null,则逐行地读取,判断不能为 null,逐行累加;
  • 如果字段允许 null,判断到有可能是 null 时要取出值再次判断,不是 null 时才累加。

count(*)

并不会读出多有字段,而是做了优化,不取值。肯定不是 null,按行累加。

按效率排列

count(字段) < count(主键 id) < count(1) ≈ count(*)
 

末了

重新总结了一下文中提到的内容:获得表行数的两种方法、不同引擎中 count(*) 的实现、缓存系统统计存在问题、InnoDB 解决了一致性视图的问题、利用事务的原子性和隔离性以简化在业务开发时的逻辑。

这篇关于02.07 Day 19 - 重温 Day 10的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/676968

相关文章

详解Spring Boot接收参数的19种方式

《详解SpringBoot接收参数的19种方式》SpringBoot提供了多种注解来接收不同类型的参数,本文给大家介绍SpringBoot接收参数的19种方式,感兴趣的朋友跟随小编一起看看吧... 目录SpringBoot接受参数相关@PathVariable注解@RequestHeader注解@Reque

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

Linux基础入门 --9 DAY

文本处理工具之神vim         vi和vim简介 一、vi编辑器 vi是Unix及类Unix系统(如Linux)下最基本的文本编辑器,全称为“visual interface”,即视觉界面。尽管其名称中包含“visual”,但vi编辑器实际上工作在字符模式下,并不提供图形界面。vi编辑器以其强大的功能和灵活性著称,是Linux系统中不可或缺的工具之一。 vi编辑器具有三种主要的工作模

day-50 求出最长好子序列 I

思路 二维dp,dp[i][h]表示nums[i] 结尾,且有不超过 h 个下标满足条件的最长好子序列的长度(0<=h<=k),二维数组dp初始值全为1 解题过程 状态转换方程: 1.nums[i]==nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h]+1) 2.nums[i]!=nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h-1

[Day 73] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

AI在健康管理中的應用實例 1. 引言 隨著健康管理需求的提升,人工智能(AI)在該領域的應用越來越普遍。AI可以幫助醫療機構提升效率、精準診斷疾病、個性化治療方案,以及進行健康數據分析,從而改善病患的健康狀況。這篇文章將探討AI如何應用於健康管理,並通過具體代碼示例說明其技術實現。 2. AI在健康管理中的主要應用場景 個性化健康建議:通過分析用戶的健康數據,如飲食、運動、睡眠等,AI可

Vue day-03

目录 Vue常用特性 一.响应更新 1. 1 v-for更新监测 1.2 v-for就地更新 1.3 什么是虚拟DOM 1.4 diff算法更新虚拟DOM 总结:key值的作用和注意点: 二.过滤器 2.1 vue过滤器-定义使用 2.2 vue过滤器-传参和多过滤器 三. 计算属性(computed) 3.1 计算属性-定义使用 3.2 计算属性-缓存 3.3 计算属

react笔记 8-19 事件对象、获取dom元素、双向绑定

1、事件对象event 通过事件的event对象获取它的dom元素 run=(event)=>{event.target.style="background:yellowgreen" //event的父级为他本身event.target.getAttribute("aid") //这样便获取到了它的自定义属性aid}render() {return (<div><h2>{

用Python实现时间序列模型实战——Day 14: 向量自回归模型 (VAR) 与向量误差修正模型 (VECM)

一、学习内容 1. 向量自回归模型 (VAR) 的基本概念与应用 向量自回归模型 (VAR) 是多元时间序列分析中的一种模型,用于捕捉多个变量之间的相互依赖关系。与单变量自回归模型不同,VAR 模型将多个时间序列作为向量输入,同时对这些变量进行回归分析。 VAR 模型的一般形式为: 其中: ​ 是时间  的变量向量。 是常数向量。​ 是每个时间滞后的回归系数矩阵。​ 是误差项向量,假

从计组中从重温C中浮点数表示及C程序翻译过程

目录 移码​编辑  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 例子:   ​编辑 浮点数取的过程   C程序翻译过程 移码  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 根据国际标准IEEE(电⽓和电⼦⼯程协会)  32位 例子:    64位    IEEE754对有效数字M和

UVA10071(重温高中物理公式)

Back to High School Physics Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18809 Description A parti