mysql
文章平均质量分 85
深夜·食堂
技能分享
展开
-
一张百万级别的表,一般如何做查询优化
我们先从存储引擎聊起,两种查询引擎查询速度(myIsam 引擎) InnoDB中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行。MyISAM只要简单的读出保存好的行数即可。 值得注意的是,当count(*)语句包含where条件时,两种表的操作有些不同,InnoDB类型的表用count(*)或者count(主键),加上where col条件。其中col列是表的主键之外的其他具有唯一约束索引的列。这样查询时速度会很...转载 2021-07-13 10:17:48 · 845 阅读 · 0 评论 -
MySQL 别再用OFFSET和LIMIT分页了
不需要担心数据库性能优化问题的日子已经一去不复返了。 随着时代的进步,随着野心勃勃的企业想要变成下一个 Facebook,随着为机器学习预测收集尽可能多数据的想法的出现,作为开发人员,我们要不断地打磨我们的 API,让它们提供可靠和有效的端点,从而毫不费力地浏览海量数据。 如果你做过后台开发或数据库架构,你可能是这么分页的: 如果你真的是这么分页,那么我不得不抱歉地说,你这样做是错的。 你不以为然?没关系。Slack、Shopify 和 Mixmax 这些公司都在用我们今天将要讨论的方式进.转载 2021-06-16 17:34:07 · 122 阅读 · 0 评论 -
挤个地铁的功夫,搞懂MySQL事务隔离级别
“隔离级别”出于MySQL四大特性(ACID)中的“I”,也就是隔离性。目的是实现数据、事务一致性“C”。 MySQL在多线程并发场景下,可能会出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)这类并发问题,为了解决这些问题,引申出“隔离级别”的概念。 谈隔离级别之前,你首先需要知道,隔离得越严实,效率就会越低。隔离就像是生活中那一件件锁事儿,枷锁越多,活得越累。在很多时候,我们都要在二者之间寻找一个平衡点。 测...转载 2021-06-02 09:59:30 · 102 阅读 · 0 评论 -
MySQL最左匹配原则,程序员都得知道的原则
通常我们在建立联合索引的时候,相信建立过索引的同学们会发现,无论是Oracle还是 MySQL 都会让我们选择索引的顺序,比如我们想在a,b,c三个字段上建立一个联合索引,我们可以选择自己想要的优先级,(a、b、c),或是 (b、a、c) 或者是(c、a、b) 等顺序。 为什么数据库会让我们选择字段的顺序呢?不都是三个字段的联合索引么?这里就引出了数据库索引的最重要的原则之一,最左匹配原则。 在我们开发中经常会遇到这种问题,明明这个字段建了联合索引,但是SQL查询该字段时却不会使用...转载 2021-05-31 10:03:10 · 1885 阅读 · 0 评论 -
MySQL 主从复制解决了什么问题?如何解决同步延迟问题?
主从复制解决的问题 数据分布:通过复制将数据分布到不同地理位置 负载均衡:读写分离以及将读负载到多台从库 备份:可作为实时备份 高可用性:利用主主复制实现高可用 复制原理 复制的原理其实很简单,仅分为以下三步: 在主库上把数据更改记录到二进制日志binary log中,具体是在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志中去,Mysql会按照事务提交的顺序来记录二进制日志的。日志记录好之后,主库通知存储引擎提交事务。 .转载 2021-05-21 09:11:44 · 108 阅读 · 0 评论 -
MySQL 不推荐使用 join是有原因的
1.对于mysql,不推荐使用子查询和join是因为本身join的效率就是硬伤,一旦数据量很大效率就很难保证,强烈推荐分别根据索引单表取数据,然后在程序里面做join,merge数据。 2.子查询就更别用了,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程。 3.如果是JOIN的话,它是走嵌套查询的。小表驱动大表,且通过索引字段进行关联。如果表记录比较少的话,还是OK的。大的话业务逻辑中可以控..原创 2021-05-21 09:03:32 · 684 阅读 · 0 评论