四个案例看懂 MySQL 事务隔离级别

[TOC]

很多小伙伴对 MySQL 的隔离级别一直心存疑惑,其实这个问题一点都不难,关键看怎么讲!单纯的看理论,绝对让你晕头转向,但是,如果我们通过几个实际的 SQL 来演示一些,大家就会发现这玩意原来这么简单!

今天松哥想通过几个简单的案例,来和大家演示一下 MySQL 中的事务隔离级别问题。

阅读更多

关于 MyISAM 引擎你可能不知道的三件事

[TOC]

存在即合理,虽然在互联网公司中 InnoDB 引擎使用较多,但是 MyISAM 引擎的特性自有它自己的使用场景,今天松哥就来和大家捋一捋 MyISAM,这也是我们 MySQL 进阶必经之路。

1.MyISAM

MyISAM 是 MySQL 的默认数据库引擎(5.5版之前),由早期的 ISAM 所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。最近几年,MySQL 逐渐使用 InnoDB 代替了 MyISAM,关于 InnoDB 和 MyISAM 的历史纠葛,松哥在上篇文章中(MySQL 体系架构简介)已经和大家介绍过了,这里就不再赘述。

阅读更多

这个 MySQL 索引选择性有点意思!

索引小伙伴们肯定经常用!但是有一种前缀索引不知道大家有没有用过或者听说过?今天松哥就来和大家聊一聊 MySQL 里边的这个前缀索引。

1.什么是前缀索引

所谓前缀索引说白了就是对文本的前几个字符(具体是几个字符在建立索引时指定)建立索引,这样建立起来的索引更小,所以查询更快。这有点类似于 Oracle 中对字段使用 Left 函数来建立函数索引,只不过 MySQL 的这个前缀索引在查询时是内部自动完成匹配的,并不需要使用 Left 函数。

阅读更多

MySQL 中的表级锁很差劲吗?

[TOC]

当然不是!

其实本来今天是要和大家聊一聊 MyISAM 引擎的,结果在写的过程中,又发现锁这个话题可以单独写一篇,于是就有了今天的文章。

说到 MyISAM 和 InnoDB 的区别,很多人都知道,区别在于一个是表锁一个是行锁,那么小伙伴们有没有想过,表锁和行锁有什么区别?各自又有哪些玩法?今天松哥就来和大家聊聊这个话题。

阅读更多

MySQL 体系架构简介

[TOC]

前面三篇文章我们一起分析了外部环境对 MySQL 性能的影响,不过起决定作用的还是 MySQL 自身,今天我们就来看看 MySQL 体系架构,看看这个数据库到底是怎么组成的。

MySQL 是一个典型的 C/S 架构应用程序,MySQL Server 提供数据库服务,完成客户端的请求和操作,Client 则负责连接到 Server。很多初学者并不太容易区分出 MySQL Server 和 Client,因为当我们安装完 MySQL 之后,默认情况下 Server 和 Client 就都具备了,我们在命令行连接并登录 MySQL 服务,这个其实就是由 Client 提供的服务。MySQL 和其他关系型数据库不一样的地方在于它的弹性以及可以通过插件形式提供不同种类的存储引擎,MySQL 请求处理过程会根据不同的存储引擎发生变化,这是它的特色。

阅读更多

硬盘是如何影响数据库性能的?

前面松哥和大家聊了 CPU 和内存对于数据库性能的影响,但是大家想想,无论如何,数据最终都是要存入硬盘中的,所以硬盘肯定也会影响到数据库的性能,那么硬盘到底是如何影响数据库性能的,今天我们就来简单聊聊。

硬盘的使用,有四个不同的方向:

  1. 传统的机械硬盘。
  2. 使用 RAID 增强机械硬盘性能。
  3. 使用固态存储 SSD。
  4. 使用网络存储 NAS 和 SAN。

接下来我们就针对这四个方向逐一进行分析。

阅读更多

CPU 以及内存从哪些方面影响 MySQL 性能?

[TOC]

影响 MySQL 性能的因素很多,今天咱们来看看 CPU 和内存是如何影响 MySQL 性能的,以及我们在购买服务器的时候,该如何挑选这些配置。

CPU

在挑选数据库服务器的时候,是买多核 CPU 还是高主频 CPU?相信有小伙伴可能遇到过类似的问题,作为开发工程师,公司负责采购的小伙伴可能会向我们抛出上面这个问题,那么该如何回答呢?

阅读更多