
数据库 高性能mysql学习笔记
左左在右边
5年工作经验,C#全栈
展开
-
MySQL 调优 —— force index() 方法强制使用这个索引
force index()指令可以指定本次查询使用哪个索引!一条sql只会用到一个索引,mysql优化器会计算出一个合适的索引,但是这个索引不一定是最好的。force index()指令可以避免MySql优化器用到了一个低效的索引。...原创 2021-03-01 09:03:12 · 573 阅读 · 0 评论 -
sqlserver 中的group_contact实现-多列合并
1,测试表数据2,语句select a.F_Name,F_CID = (stuff((select ',' + F_CID from Test_Sum where F_Name = a.F_Name for xml path('')),1,1,'')) from Test_Sum a group by a.F_Name 3,知识点解析 for xml pathselect F_CID=(SELECT F_CID FROM [Test].[dbo].原创 2020-07-13 22:41:27 · 4269 阅读 · 0 评论 -
sqlserver2016以下的两种拆分方法
1,辅助表,速度慢的死。SELECT TOP 1000 [Title] ,[Content] FROM [DanganGuan].[dbo].[TestKeyWord]; select [Content], [Title]=substring(a.[Title],b.number,charindex(';',a.[Title]+';',b.number)-b.number)from [DanganGuan].[dbo].[TestKeyWord] ajoin master...原创 2020-06-12 17:24:42 · 362 阅读 · 0 评论 -
图书高性能mysql学习笔记--limit优化方法
1,limit的缺点。 limit用作于分页查询,用法 limit 偏移量,返回数量。一个简单的例子 limit 10000,10。这个查询将查询10010条数据,并抛弃前面的10000条,返回最后的10条结果,这样做的代价非常高,性能浪费严重。2,优化一:前端优化,尽可能避免大数据量便宜,即在查询中限制查询返回,例如强制查询中加入日期区间等。 优化二:数据库...原创 2020-04-03 15:22:10 · 214 阅读 · 0 评论 -
mysql----sql运行的原理
1,一条sql语句进入到数据库,会被解析器解析,校验语法是否正确。2,校验权限,验证是否有数据库或者表的增删改查权限。3,sql优化器对该语句进行优化。 一条复杂的sql,在解析的时候会有多个策略查询出预想的结果集。 例如:select a.* from a,b where a.Name="abc" and b.aId=a.Id。 ...原创 2019-12-04 15:28:14 · 154 阅读 · 0 评论 -
sql查询优化之预估查询扫描行数-explain学习
sql中提供了explain 关键字来分析查询性能,语法如下:explain SELECT * FROM tpi.cqca_userintegrationsummary where Id =313253。重点关注字段 type 本次查询表联接类型,从这里可以看到本次查询大概的效率 key 最终选择的索引,如果没有索...原创 2019-12-03 11:22:31 · 4382 阅读 · 0 评论 -
图书高性能mysql学习笔记--索引的优点
索引能大幅度提升查询性能,大部分索引时指的b-tree。1,索引事扫描全表变得扫描部分。2,索引使随机排序变成顺寻排序 3,索引可以使服务器避免排序和临时表。当然对大多数小数据表,全表扫描时优于索引的,索引对于大型表的查询提升是有效的,但随之带来表插入速度的变慢等代价。对于某些业务可以使用分区技术来解决,例如日期是查询必不可少的条件。...原创 2019-10-10 21:08:17 · 178 阅读 · 0 评论 -
图书高性能mysql学习笔记-计数器表
1,计数器表是指为专门需要建立一个需要统计下载阅读次数的业务进行一个计数器表, 常用sql是update counter set readcount=readcount+1 where id="12123". 如果业务只是对单纯这些数据的统计不进行排重或者多次行为都有效或者不记录具体行为操作的话,这种单纯的计数表满足我们的查询,我们只需要在程序上触...原创 2019-10-09 22:21:33 · 175 阅读 · 0 评论 -
图书高性能mysql学习笔记--缓存表和汇总表
提高数据库性能的有效办法之一就是建立缓存表和汇总表。 汇总表的好处是统计变得简单,对需要频繁统计的表插入性能进行了大大的提高。当一个业务频繁的电商网站需要统计近24小时的订单总数时,建立定时任务,每小时统计订单数量插入到汇总表里,然后累加24小时的记录总和,这样对数据库的开销变得非常小,查询也变得简单。不好的之处是,统计得来的数据有一定延时性,如果非要实时统计订单数量,我...原创 2019-10-08 20:48:57 · 491 阅读 · 0 评论 -
图书高性能mysql学习笔记--范式和非范式设计得优缺点
数据库设计三大范式的定义第一范式 1、每一列属性都是不可再分的属性值,确保每一列的原子性 2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。举例:一个表字段同时出现商品1和商品2两个的设计是不符合第一范式的第二范式每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。举例:一张订单表...原创 2019-10-08 17:32:55 · 415 阅读 · 0 评论 -
图书高性能mysql学习笔记-数据库优化(字段设计原则篇)
数据库字段设计要获得更高的性能,遵循的几个原则: 更小的通常更好。由于更小的数据类型通常更快,因为它们占用最小的 磁盘、内存和缓存,并且处理时需要的cpu周期也更少。但是要确保没有嘀咕业务所需的存储的值的范围,毕竟系统上线了再改数据类型的范围,通常都以为着凌晨升级数据库...,数据量打了更是一件耗时的事情。 简单就好。简单数据类型的操作需要更好的cpu周期。例如,...原创 2019-09-30 13:48:36 · 291 阅读 · 0 评论 -
图书高性能mysql学习笔记--储存引擎的修改
1,语句修改,更改表引擎的语句为:alert table mytable engine=InnoDB;这种非常耗资源2,导入和导出生成脚本,然后更改脚本的文件的引擎语句3,创建和查询语句: Create table innodb_table like myisam_table; alert table innodb_table ENGI...原创 2019-09-26 11:01:21 · 170 阅读 · 0 评论 -
图书高性能mysql学习笔记--事务
案例:当存在这样一个业务场景,使用20购物券买价格为100的东西,账户余额为200。 sql描述如下: 购物券20的变为已使用, 检查余额充足 账户余额变为120, 增加一张订单。很明显,我们的这些操作要么全部成功,要么全部失败,否则我们的数据就会...原创 2019-09-26 10:30:08 · 132 阅读 · 0 评论 -
图书高性能mysql学习笔记--储存引擎
1,innodb引擎是mysql默认的事务引擎,也是最重要的和使用最广泛的。它被用来设计用来处理大量短期(short-lived)事务,短期事务大部分是正常的,很少会被回滚。 innodb 是支持热备份的,支持高并发(行级锁),并且有良好的崩溃自动恢复。 2,MYISAM是5.1版本之前的引擎,不支持行级锁和事务,崩溃后无法自动恢复,不建议在继续...原创 2019-09-25 15:51:37 · 152 阅读 · 0 评论 -
图书高性能mysql学习笔记--读写锁
当一行记录同时被更新和读取时,会发生什么是不可预估得,有可能是读取得是更新前的数据,也有肯能是之后的数据。mysql为了解决这个问题,采用一种解决方案:并发控制,具体实现一个由两种类型得锁组成的锁系统。这两种类型得锁同城被称为共享锁(share lock)和排他锁(exclusive lock),也叫读锁和写锁。 读锁,是共享的,多个线程可以同时读取同一个资源,且互不...原创 2019-09-25 10:48:30 · 153 阅读 · 0 评论 -
图书高性能mysql学习笔记---mysql架构图解
从图中来看,mysql架构分为三层: 第一层主要处理与客户端的通讯,大部分并写请求在这里会被加入队列。每个客户端这里都会拥有一个进程。客户端链接服务器需要认证,基于账号和密码。 第二层是缓存和sql语句解析器、优化器,另外,mysql得内置函数实现,如日期,功能例如视图等都在这一层。优化器得作用之一是:查询索引,还是遍历表。对于select得语句会先检查询缓存,如果能...原创 2019-09-25 10:31:01 · 217 阅读 · 0 评论