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

SQL锁总结

一、概述 介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。...,在InnoDB中引入了意向锁,使得表锁不用检查每行数据是否加锁,使用意向锁来减少表锁的检查。...锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在InnoDB存储引擎中。 InoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的锁。...1.索引上的等值查询(唯一索引),给不存在的记录加锁时,优化为间隙锁。 2.索引上的等值查询(普通索引),向右遍历时最后一个值不满足查询需求时,neXt-key lock退化为间隙锁。...3.索引上的范围查询(唯一索)-会访问到不满足条件的第一个值为止。 注意:间隙锁唯一目的是防止其他事务插入间隙。间隙锁可以共存,一个事务采用的间隙锁不会阻止另一个事务在同一间隙上采用间隙锁。

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

    2.22 PowerBI数据建模-3种平均值

    按样本个数的不同统计口径,有3种平均值,以月均XX为例:1 取有值的样本个数,有几个月有数字,样本个数就是几个月;2取所选的样本个数,不管这些样本有没有值,时间段选择了一年,样本个数就是12;3取开始有值的第一个月及它以后的所选样本个数...模型销量表度量值Sales = SUM(Fact_Sales[销量])1 取有值的样本个数,使用现成的平均值函数AVERAGEX。基于哪个字段求平均值,第一参数VALUES()中就放哪个字段。...Average_AverageX = AVERAGEX(VALUES('Date'[YearMonth]), [Sales])2 取所选的样本个数,不管这些样本有没有值。...Average_Divide = DIVIDE([Sales], DISTINCTCOUNT('Date'[YearMonth]))3 取开始有值的第一个月及它以后的所选样本个数。...]), FILTER('Date','Date'[Date]>=_vm_StartDate ))RETURNDIVIDE([Sales], _vm_NumberOfMonth)选择2023年整年,3种平均值的结果如下

    8610

    MySQL索引选择规划

    MySQL优化器只能根据统计信息来估算实际的记录数,该统计信息称为区分度。一个索引上不同的值越多,区分度越高。一个索引上的不同值的个数称之为基数。...索引基数如果真的基于表的所有数据精准计算,代价过高,因此基数在获取的时候还是基于采样获得。...采样统计时,InnoDB会默认选择N个数据页,统计这样写页面上的不同值,得到一个平均值,然后乘以这个索引的页面数,结果即索引的基数。...随着数据表的不断更新,索引基数也需要更新,当变更的行数超过1/M的时候,会自动重新做一次索引基数计算。...原因是全表扫描是在主键索引上扫描,没有回表操作的额外代价,优化器会自己估算全表扫描和索引a的代价,从上述结果来看,优化器认为全表扫描更加快捷,但是我们通过慢日志可以看出优化器的这个选择并不是最优解。

    1K10

    mysql为什么选错索引?怎么解决?

    在进行慢SQL分析的时候,有时候我们会发现explain的扫描行数和慢日志中的行数相差很大,那explain中的rows这个扫描行数是怎么判断的?...这个统计信息就是索引的“区分度”,显然,一个索引上不同的值越多,这个索引的区分度就越好。而一个索引上不同的值的个数,我们称之为“基数”(cardinality)。...采样统计的时候,InnoDB默认会选择N个数据页,统计这些页面上的不同值,得到一个平均值,然后乘以这个索引的页面数,就得到了这个索引的基数。 而数据表是会持续更新的,索引统计信息也不会固定不变。...所以,当变更的数据行数超过1/M的时候,会自动触发重新做一次索引统计。...在MySQL中,有两种存储索引的方式,可以通过设置参数innodb_stats_persistent的值来选择: 当设置为on的时候,表示统计信息会持久化存储。这时,默认的N是20,M是10.

    51610

    MySQL为什么会选错索引

    优化器的逻辑 MySQL server层的优化器负责选择索引。而优化器选择索引的目的,是找到一个最优的执行方案,并用最小的代价去执行语句。在数据库里面,扫描行数是影响执行代价的因素之一。...扫描的行数越少,意味着访问磁盘数据的次数越少,消耗的 CPU 资源越少。当然,扫描行数并不是唯一的判断标准,优化器还会结合是否使用临时表、是否排序等因素进行综合判断。...显然,一个索引上不同的值越多,这个索引的区分度就越好。而一个索引上不同的值的个数,我们称之为“基数”(cardinality)。也就是说,这个基数越大,索引的区分度越好。...采样统计的时候,InnoDB 默认会选择 N 个数据页,统计这些页面上的不同值,得到一个平均值,然后乘以这个索引的页面数,就得到了这个索引的基数。而数据表是会持续更新的,索引统计信息也不会固定不变。...,其实就是一种随机取样统计,因为选择全部数据页取平均值代价太高不可取,被取得数据页就是样本。

    99120

    Pandas学习笔记05-分组与透视

    分组 在进行groupby分组后,我们可以对分组对象进行各种操作,比如求分组平均值mean() ? 分组统计 很多时候,我们需要返回dataframe型数据进行二次操作 ?...使用函数进行分组 2.聚合 常见的聚合函数如下: 计算组的平均值 ? 演示数据 简单的分组聚合操作 ? 分组聚合 同时使用多种聚合方法 ? 同时使用多种聚合方法 对聚合结果列进行命令 ?...对聚合结果列命名 对不同的列进行不同的聚合方法 ?...values:要汇总的一列或一列列表。 index:与数据或它们的列表具有相同长度的列,Grouper,数组。在数据透视表索引上进行分组的键。如果传递了数组,则其使用方式与列值相同。...columns:与数据或它们的列表具有相同长度的列,Grouper,数组。在数据透视表列上进行分组的键。如果传递了数组,则其使用方式与列值相同。

    1K30

    python演示推荐系统里的协同过滤算法

    从数学上讲,推荐任务设置为:用户集 (U)要推荐给 用户集(U)的一组项目 (I)学习一个基于用户过去交互数据的函数,预测项目 I 到 U 的可能性根据用于推理的数据,推荐系统大致分为两类:基于内容的过滤...推荐系统的一些重要应用包括渗透在我们生活里面的方方面面:购物网站上的产品推荐流媒体网站的电影和电视节目推荐新闻网站上的文章推荐二、什么是协同过滤?...当然,我们更相信那些与我们有相似品味的朋友的推荐。大多数协同过滤系统应用所谓的基于相似性索引的技术。在基于邻域的方法中,根据用户与活动用户的相似性来选择多个用户。...通过计算所选用户评分的加权平均值来推断活跃用户。协同过滤系统关注用户和项目之间的关系。项目的相似度由对这两个项目进行评分的用户对这些项目的评分的相似度来确定。...推荐模型的任务是学习一个函数来预测每个用户的拟合度或相似度。矩阵通常是非常稀疏、就是维度巨大但里面大多数矩阵元素删除了值。在下面的矩阵中,每行代表一个用户,而列对应不同电影。

    17010

    38 | Memory引擎使用场景

    表t2使用都InnoDB 引擎,InnoDB 表的数据就放在主键索引树上,主键索引是 B+ 树,数据组织方式如下: ? 主键索引上的值是有序存储的。...主键 id 是 hash 索引,可以看到索引上的 key 并不是有序的。 在内存表 t1 中,执行 select * 的时候,走的是全表扫描,也就是顺序扫描这个数组。...因此,0 就是最后一个被读到,并放入结果集的数据。 可见,InnoDB 和 Memory 引擎的数据组织方式是不同的: InnoDB 引擎把数据放在主键索引上,其他索引上保存的是主键 id。...而 Memory 引擎采用的是把数据单独存放,索引上保存数据位置的数据组织形式,我们称之为堆组织表(Heap Organizied Table)。...InnoDB 支持变长数据类型,不同记录的长度可能不同;内存表不支持 Blob 和 Text 字段,并且即使定义了 varchar(N),实际也当作 char(N),也就是固定长度字符串来存储,因此内存表的每行数据长度相同

    63300

    Mysql - join 原理

    上有索引的情况)   不用额外内存   对 A 和 B 都从 硬盘中读,每读 A 一行(从主键索引上拿出 x,然后去硬盘通过 y 上索引的 B+ 树查找到对应的行),都会读 1 ~ N 行B   读...A 的一行,然后和 这 1 ~ N 行结合 放到结果集(结果集是最后返回给用户的,不算临时表)   具体只用 100 * k * log (1000) 次的磁盘读,k是不定常数 2.被驱动表上无索引的情况...  需要额外内存,被称为 join buffer   join buffer 被放入驱动表,一般选用小的当驱动表(小的度量单位指的是 表行数 * 每行大小)   对于被驱动表,从硬盘读出,并且每读出一行数据...(先放在内存),就会取这行数据 对应的条件字段(B.y) 去和内存中的小表一行行比较   把符合条件的驱动表的行 和 从磁盘中读出来的被驱动表的行 放入结果集   具体要比较 100 * 1000 次,...但是是内存操作   磁盘读需要 100 + 1000 次 3.如果驱动表太大,join buffer 容不下,那么就要把 驱动表分批次读入内存 因为只有被读入的部分可以被 被驱动表比较,并且被比较的部分是被

    76530

    【MySQL】说透锁机制(二)行锁 加锁规则 之 范围查询(你知道会锁表吗?)

    本文会按照 聚集集索->唯一索引->普通索引 的顺序 地毯式分析 范围查询中 、>= 的行锁情况,锁表分析在唯一索引 章节,万字长文,力求分析全面,很硬核全网独一份,别忘了收藏!...Lock,对应的聚集索引 上Record Lock; 对于 引上向右扫描, 直到找到 [不匹配的索引记录] 上Next-key Lock,对应的聚集索引 上Record Lock...所以对于 的结果是: 聚集索引上, 所有匹配的 索引记录 上Next-key Lock; 向右扫描聚集索引, 直到找到 [不匹配的索引记录] 上Next-key Lock...): 如果走了普通索引: 在该索引上,所有匹配的 索引记录 上Next-key Lock,对应的聚集索引 上Record Lock; 在该索引上,对supremum (上界限伪值) 上Next-key...= 20上了锁 结果:(和单个规则相同) 如果走了普通索引: 在该索引上,所有匹配的 索引记录 上Next-key Lock,对应的聚集索引 上Record Lock; 在该索引上,向右扫描

    2.2K32

    VBA专题06-1:利用Excel中的数据自动化构建Word文档—了解Word对象模型

    下图2展示了Word文档中的一些常用对象。 ? 图2:文档文本对应的常用对象示例 以上图2中所选择的段落为例,使用VBA代码来对其进行分析。...下面的代码分析上图2所选文字区域的段落和句子: '分析所选文字区域的段落和句子 Dim str As String Dim rng As Range Dim i As Long str = "所选区域的段落数...图3:上图1所选文本中段落和句子的分析结果 可以看出,Word VBA是以“。”或“.”为分隔符来拆分出句子的。...下面的代码分析上图2所选文字区域的词语和字符: '分析所选文字区域的词语和字符 Dim str As String Dim rng As Range Dim i As Long str = "所选区域的词语数...& rng.Text str = str & vbTab i = i + 1 '每行8个词 If (i Mod 8) = 0 Then str = str &

    3.1K40

    按概率随机生成结果,学会它我可以去开彩票了

    随机数是专门的随机实验的结果,在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的实验组的过程中,或许在进行蒙特卡罗模拟法计算的时候等等。...总所周知,彩票就是一种随机的发生,但是在这随机的表面下实际上是一种有目的行的控制的随机。...简而言之是在大概率下的随机生成定义概率集改造概率集随机生成概率集索引通过率索查找元素测试数据验证加入战队目录==[TOC]定义概率集=====/** * 定义一个连续集合 * 集合中元素x满足:(minElement...这里友情提醒一下,这里的概率集并不一定需要概率和为100% , 这里的概率提供方只需要提供一个权重就行了,我们在投射到宿主轴1上的时候自动会一次补全的,最后也是通过随机数看在那块权重对应的索引上的。...52.38在3060这个区间范围,所以此次随机生成的所以则为30~60对应的索引3(从0开始)通过率索查找元素========上面52.38对应的概率集合中的索引是3,这里就解释了为什么概率集和结果集个数要对应上

    27810

    Transformers 4.37 中文文档(三十六)

    由于它在最后一个标记上进行分类,因此需要知道最后一个标记的位置。如果在配置中定义了pad_token_id,则会找到每行中不是填充标记的最后一个标记。...如果未定义pad_token_id,则会简单地取批处理的每行中的最后一个值。...由于它对最后一个标记进行分类,因此需要知道最后一个标记的位置。如果在配置中定义了pad_token_id,则会找到每行中不是填充标记的最后一个标记。...如果未定义pad_token_id,则会简单地取每行批次中的最后一个值。当传递inputs_embeds而不是input_ids时,无法猜测填充标记,因此会执行相同操作(取每行批次中的最后一个值)。...如果没有定义pad_token_id,它会简单地取每行批次中的最后一个值。

    38910

    深入分析MySQL行锁加锁规则

    顾名思义,行锁就是给数据库表中每行数据加锁,行锁是加在索引上的,比如某个表中id字段是主键,如果给id=2这条记录加锁,那这把锁是加在主键索引(聚簇索引)上的。...,对主键索引上的每一条记录都加了邻键锁: 这里可以得出结论:查询条件是唯一索引时,如果查询条件是等值查询且记录存在,除了会在唯一索引上对查到的记录加记录锁,也会在主键索引上对那些记录的主键对应位置上加记录锁...,在主键索引上获取id=2的记录锁的状态为GRANTED: 这种情况只是在唯一索引上对查询条件所在区间的下一条记录加了邻键锁,但是没在对应主键索引上加记录锁。...,会对在查询范围内的记录在主键索引上对应的位置加记录锁。...,在唯一索引上,会对查询条件所在间隙的下一条记录加邻键锁;在主键索引上不加锁。

    2.1K40

    九. Linux网络命令

    最后,给出汇总信息,包括报文总收发情况,总时间,往返时间最小值、平均值、最大值、平均偏差(越大说明网络越不稳定)。...raw mangle nat filter(最为常用) 过滤策略 -L : 显示所选链接的所有策略 : # iptables -L -n 查看iptables 策略 -A : 在所选的链最尾部添加一条新的策略...:# iptables -A INPUT -s 192.168.0.1 -j DROP -D : 从所选链中删除策略,可以通过将策略的内容完整的写出来或指定在所愿链中的序号 -R:替换所选中的链里指定的策略...:# iptables -R INPUT 1 -s 192.168.30.0 -j DROP(替换第一条) -I: 从所选的链中指定策略前面插入一条新的策略 # iptables -I INPUT 2...-s 192.168.10.2 -j DROP -F:清空所选链的策略,如果没有指定链,则清空指定表的所有链:# iptables -F INPUT (清空INPUT链) -Z:将所选链的所有计数器归零

    18040

    ⑩⑦【MySQL】锁:全局锁、表级锁、行级锁

    锁是计算机协调多个进程或线程并发访问某一资源的机制 。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。...,在InnoDB中引入了意向锁,使得表锁不用检查每行数据是否加锁,使用意向锁来减少表锁的检查。...InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的锁。...索引上的等值查询(唯一索引),给不存在的记录加锁时,优化为间隙锁 索引上的等值查询(普通索引),向右遍历时最后一个值不满足查询需求时,next-key lock退化为间隙锁 。...索引上的范围查询(唯一索引),会访问到不满足条件的第一个值为止。 间隙锁唯一目的是防止其他事务插入间隙 。间隙锁可以共存 ,一个事务采用的间隙锁不会阻止另一个事务在同一间隙上采用间隙锁。

    43130

    python中的元组

    = (1) # type = int num  = (1,) # type  = tuple 和列表一样 也可以使用数字索引提取元素中的值 然而最常用的方法是将元组解包为一组变量: number =...或者 插入新元素) 说明: 最好把元组看做由多部分组成的对象 而不是可在其中插入或者删除项的不同的集合 元组修改必须使用切片和连接运算符 : name = ('双枪将董平','没羽箭张青','青面兽杨志...')  #不能用insert或者append方法 添加新元素 name=name[1:]+('急先锋索超',) +name[:1];  输出结果: ('没羽箭张青', '青面兽杨志', '急先锋索超',...通常同时使用元组和列表: filename = 'E:/work.txt'; datas = []; for line in open(filename):  fileds = line.split(',');  #将每行划分为一个列表...可使用:tuple1 = str, 或者 tuple1 = (str,)  3,常用的提取值的方式 切片或者索引提取或者将元组解包为一组变量 name ,age,add = date; 5,元组不可以使用常规方法被修改或者添加项

    1.1K10

    【Java】数组定义和访问及数组原理内存图

    这个自动编号称为 数组索 引 (index) ,可以通过数组的索引访问到数组中的元素。...格式: 数组的长度属性: 每个数组都具有长度,而且是固定的, Java 中赋予了数组的一个属性,可以获 取到数组的 长度,语句为: 数组名 .length ,属性 length 的执行结果是数组的长度...我们编写的程序是存放在硬盘中 的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。 Java 虚拟机要运行程序,必须要对内存进行空间的分配和管理。...new 出来的 内容,都是在堆内存中存储的,而方法中的变量arr 保存的是数组的地址。...输出 arr[0] ,就会输出 arr 保存的内存地址中数组中 0 索引上的元素 两个数组内存图 两个变量指向一个数组

    51940

    喻志强于梦李爱民Bioactive Materials:CXCR4靶向脂质体调节乏氧和免疫抑制微环境用于索拉非尼耐药肝癌治疗

    设计开发的PFH@LSLP纳米粒通过调节缺氧和免疫抑制微环境介导的抗肿瘤协同疗法治疗索拉非尼耐药肿瘤。...肿瘤缺氧是导致肿瘤治疗失败的主要原因之一,对肿瘤缺氧几乎没有有效的治疗方法,而且很多研究结果表明索拉非尼治疗效果不佳也与肿瘤逃避免疫监测的适应机制密切相关。...(E)低氧条件下LS、PFH@LS、PFH@LSL和PFH@LSLP体外释放索拉非尼。数据以平均值±SD表示(n = 3)。***p的协同效应来克服索拉非尼耐药的: 1)O2饱和的PFH核心可以通过O2供应缓解肿瘤缺氧; 2) LFC131多肽靶向肿瘤乏氧过表达的CXCR4,阻断SDF-1α/CXCR4...综上可知,这种多功能纳米药物在临床协同化疗和免疫治疗提高索拉非尼耐药肿瘤的治疗效果方面具有巨大潜力,极大地促进了纳米药物递送体系在肝癌治疗中的应用。

    99830
    领券