mysql
文章平均质量分 91
风清扬-独孤九剑
后端技术专家
展开
-
mysql 排序底层原理解析
本章详细讲下排序,排序在我们业务开发非常常见,有对时间进行排序,又对城市进行排序的。不合适的排序,将对系统是灾难性的,这个不是危言耸听。可能有些人会想,对于排序mysql 是怎么实现的,它的底层原理是怎么样的,如果我加上分页,排序是不是就会快一些。关于这些问题,本章详细讲解。有人经常问我,mysql 优化的规则,总是不假思索的说ESR,E 是 equal ,S是sort。可见排序有多么重要,为了讲解方便,我先画个思维导图。上图标的1,2 是mysql 配置文件可以配置的。原创 2024-03-15 00:34:34 · 1220 阅读 · 0 评论 -
浅析 mysql 两阶段提交
在业务上,对数据的更新是非常频繁的,mysql 来说就是一条update 语句。大家有没有感觉update 语句对普通索引的更新总是很快,这是为啥呢?是不是很好奇更新语句的执行流程是怎么样的呢?由于语句执行错误,数据被污染,我们会让DBA 帮我们恢复到更新前的状态,这又是怎么完成的呢?对于这些问题,会在接下来的文章详细讲解,本章引擎是innodb 引擎。为了方便讲解,我将画一个流程图,这个流程图包括各层需要的日志文件。原创 2024-03-13 19:39:17 · 1207 阅读 · 0 评论 -
mysql 获取行数的n种方式详解
在开发中,经常很多用在统计表的总数据时,有用count(*),count(1) 还有count(字段)。这篇文章我将详细讲解他们之间有什么不同,他们的底层是怎么实现的。你会发现一个现象随着记录越来越多,select count(*) from t_user ,这条语句执行也会越来越慢。你惊奇的发现,就这条语句而已myisam 比 innodb 要快,为什么呢,就拿innodb 而言,这条语句第一次查询比第二次查询要慢很多,又是为什么呢?下面关于这些问题我都会给大家详细解决。原创 2024-03-12 14:11:06 · 1133 阅读 · 0 评论 -
mysql 优化——磁盘空间优化
有的时候,表的数据太多,为了提高查询以及存储,就把历史数据放到一个历史表里,在把历史数据删除,发现虽然历史数据删除,表的大小并没有发生改变。Innodb 表有两部分,即:表结构定义和数据。在 MySQL 8.0 版本以前,表结构是存在以.frm 为后缀的文件里。而 MySQL 8.0 版本,则已经允许把表结构定义放在系统数据表中了。因为表结构定义占用的空间很小,所以我们今天主要讨论的是表数据。原创 2024-03-10 17:36:40 · 1119 阅读 · 0 评论 -
mysql 性能优化——磁盘刷脏页性能优化
大家是不是感觉mysql 更新挺快的呀,有没有想过mysql 更新为什么那么快。按道理说,mysql 更新都是先找到这一行数据,然后在去更新。意味着,就有两次磁盘操作,一个是磁盘读,一个是磁盘写。如果真的是这样的话,肯定会很慢呀,mysql 也没有那么傻。当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log 里面,并更新内存,这个时候更新就算完成了。同时,InnoDB 引擎会在适当的时候,将这个操作记录更新到磁盘里面。原创 2024-03-10 11:16:27 · 1128 阅读 · 0 评论 -
字符串索引的优化
字符串加索引无非就是两种方式,一是给整个字符串加索引,二是给部分字符加索引也就是前缀索引。这两种方式各有优点吧,他们的区别是什么?究竟怎么加索引,要不要加索引,怎么加索引,要根据具体的业务而定。这篇文章讲详细阐述这几个问题。字符串索引和主键索引有很大区别,作为主键索引,我们一般会保证主键递增,也就不会有页的分裂。而字符串索引由于业务的原因,没法保证数据的顺序性,就会有页的分裂来保证索引的顺序性,还好非聚簇索引,叶子节点没有整行的数据。原创 2024-03-09 11:34:14 · 765 阅读 · 0 评论 -
普通索引和唯一索引详解
面试的时候有时会问面试者,普通索引和唯一索引有什么区别。很多人,甚至工作很多年的工程师回答的千篇一律 “普通索引可以有重复的值,唯一索引不能有重复的值”。于是我又问,这两个索引这两个索引效率哪个高,很少有人回答的很好。下面我会从查询和更新多个维度去剖析这两个索引的区别。现在我们系统有这样一个需求,根据用户的身份证查询用户的信息,用户表的数据很多。原创 2024-02-29 16:33:22 · 560 阅读 · 0 评论 -
浅谈mysql mvcc
mvcc 与一个事物的隔离级别有关,未提交读永远读的是当前值,串行化是通过加锁实现,这两种隔离级别都与mvcc 没有任何关系。只要一提到mvcc应该想到的是读提交以及可重复读,大家有没有想过都是mvcc,为啥这两个隔离级别所呈现的结果有些不一样呢?难道会有两套mvcc 吗?当然不是,对于这个问题,稍后我会说明的。我先举一个简单的例子。下面是一个表的初始化语句。原创 2024-02-29 01:06:04 · 986 阅读 · 0 评论 -
mysql 事务详解一
提到事务,大家肯定不陌生。在我们现实生活中也是存在的,比如我们去超市购物,然后去支付。虽然是两个步骤,必须保证同时成功,这个交易才可以完成。如果这个场景,拿到我们购物系统,就是几张表订单表、支付表、流水表。你往订单表插入一条数据,同时也会往支付表,流水表拆入一条数据,这个插入操作必须同时成功。这就是事务,简单来说事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在mysql 中,事务支持是在引擎层实现的。原创 2024-02-23 16:57:31 · 1066 阅读 · 0 评论 -
mysql 锁详解
为什么要设计锁,锁设计初衷是为了解决多线程下并发问题。出现并发的时候用锁进行数据同步,避免因并发造成了数据错误(数据覆盖)。可见锁的重要性,并不是所有的数据库都有锁。比如Redis,单个操作是原子性的,并且是单线程的,并发请求会在队列排列,请求是按顺序执行的,就不需要锁。Mysql 需要锁,mysql 是多线程的,并发操作要保证数据的一致性,需要通过锁进行数据同步。根据锁的范围来讲,mysql 的锁分为全局锁、表级锁和行锁。原创 2024-02-21 20:32:27 · 1459 阅读 · 1 评论 -
sql where 1=1和 0=1 的作用(多条件查询错误的问题)
where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句。一、不用where 1=1 在多条件查询中的困扰 举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体如下: string MySqlStr=”select * from原创 2014-07-11 11:37:03 · 2052 阅读 · 0 评论 -
mysql分表方法-----MRG_MyISAM引擎分表法
一般来说,当我们的数据库的数据超过了100w记录的时候就应该考虑分表或者分区了,这次我来详细说说分表的一些方法。目前我所知道的方法都是MYISAM的,INNODB如何做分表并且保留事务和外键,我还不是很了解。首先,我们需要想好到底分多少个表,前提当然是满足应用。这里我使用了一个比较简单的分表方法,就是根据自增id的尾数来分,也就是说分0-9一共10个表,其取值也很好做,就是对10进行取模。原创 2014-07-09 14:06:12 · 1110 阅读 · 0 评论 -
mysql merge表介绍
在Mysql数据库中,Mysql Merge表有点类似于视图。下面就让我们来一起了解一下Mysql Merge表都有哪些优点,希望对您能有所帮助。Mysql Merge表的优点:A: 分离静态的和动态的数据B:利用结构接近的的数据来优化查询C: 查询时可以访问更少的数据D:更容易维护大数据集E: 可以通过修改.mrg文件来修改Merge表,当然也可以用alter进行修改原创 2014-07-09 15:38:32 · 1426 阅读 · 0 评论 -
mysql分表方案
一、 概述分表是个目前算是比较炒的比较流行的概念,特别是在大负载的情况下,分表是一个良好分散数据库压力的好方法。首先要了解为什么要分表,分表的好处是什么。我们先来大概了解以下一个数据库执行SQL的过程:接收到SQL --> 放入SQL执行队列 --> 使用分析器分解SQL --> 按照分析结果进行数据的提取或者修改 --> 返回处理结果当 然,这个流程图不一定正确,转载 2014-07-09 16:37:23 · 676 阅读 · 0 评论 -
PHP 生成.csv 文件并下载到浏览器
最近做了一个项目需要把订单的信息显示出来,并且能够把相关信息放到一个.csv 文件中,下载到浏览器。首先我要说明的是.csv 文件,PHP 有专门的函数去解析该类型的文件,相关函数大家可以去官网查看。注意.csv 文件内容的编码格式是gbk格式的,所以有必要对字符格式进行转码。文件的样式如下。原创 2014-07-18 09:40:10 · 4153 阅读 · 3 评论 -
MySQL 性能优化的最佳20多条经验分享
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的 事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语 句的优化,而只是针对MyS原创 2014-06-26 01:26:22 · 1288 阅读 · 1 评论