MySQL -- 调优
多数时候数据库会成为整个系统的瓶颈,比如大的数据量的插入与修改,频繁的亦或是高流量的访问,都会对数据库系统带来很大的压力。我在平时工作的时候,总是会遇到大数据量的插入、修改或是查询的操作,所以在工作的时候积累了一些MySQL数据库的调优方式,在这里与大家分享一下。
1、缓存。缓存是解决这类问题的一把手。它既可以加快整个系统(并非数据库系统,使用缓存的时候并没有去访问数据库)的访问速度,也可以减少数据库负载的压力。而缓存一般都是在查询中使用,我们并不希望每一次的查询都要去访问数据库。那么我们的缓存做到哪里呢?一般情况下版的系统都会存在服务层这一结构层次,而数据访问层一般都只是对于数据库的增删改查的接口的定义,所以我们的缓存就需要在服务层进行。而mybatis中的一级缓存,通过判断查询条件是否要访问数据库,查询条件与某一次相同,则直接返回缓存中的数据,查询条件不同则需要访问数据库,并且将结果放到缓存中。
2、当只需要一条数据时使用LIMIT 1.我们作为开发者,是能够知道我们需要的数据的条数的,若已经知道结果只有一条的时候,一定要使用limit 1 ,这样一来,MySQL在查询到一条数据之后,会立即停止搜索,这会带来性能上的提升。
3、避免select * ,取之所需。公司里的一些同事,无论查询什么都是直接select *,然后再从结果中取想要的字段。这样做的话,平白无故的给MySQL带来了不必要的负担,因为从数据库中读出越多的数据,查询就会变得越慢。所以,以后看到select * 的时候,想一下是否可以在这里进行一些优化。
4、为每张表设置一个id作为其主键。这个id最好是一个int类型的,推荐使用unsigned,并将其设置为自动增加auto_increment。之前就出现过一个同事将varchar的字段作为主键的情况, 然后在数据量较大的时候,数据库这个环节速度变得不是很友好,所以尽量不要使用varchar来当主键,它会使得性能出现下降。而且在某些情况下,id这个主键字段是非常重要的。
5、使用enum而不是varchar。实际上,enum保存的是tinyint类型,但其显示为字符串。用这个字段来作一些选项列表就变得很合适了。比如你有一个字段,比如“性别”、“状态”或“所属部门”等,你知道这些字段的值是固定且有限的,那么可以考虑使用enum。对于性别这个字段,一般分为两种,有可能还有保密这种情况,我们可以使用数字1、2、3来分别表示这三张情况,而对于这些数字含义的区分则是业务层的事情了。我们需要将一些繁琐的需要计算的步骤全部放到业务层(或者说是服务层),因为系统的瓶颈在数据库,我们不能将过多的计算过程压到数据库上面去。数据库存储的数据应该尽量简单,但是,我们会在业务层结合具体的业务,对这些简单的数据进行分析。
6、尽可能的使用not null。除非你有一个很特别的原因要去使用null值,你应该总让你的字段保持为not null。
7、选择正确的存储引擎。myisam适合一些需要大量查询的应用。但其对于大量写操作并不是很好。因为它使用到的是表级锁,所以在你更新的时候,整张表都会被锁起来,试想一下,当你在更新某一行数据的时候,导致其他的行都无法被访问,这会不会 很难受呢。另外,myisam对于select count(*)这类操作的计算时很快的。而至于innodb而言,对于一些小的应用,它会比myisam还慢。它支持的是行级锁,于是写操作较多的时候,它会更加优秀。它还支持一些更高级的应用,比如说:事务。
8、拆为搜索的字段建立索引。不要以为只有标的逐渐可以建立索引,如果某个字段你总要拿来做搜索,那么为它简历索引吧。但是,不要以为建立索引,就可以为所欲为。其中有一些常用的规则需要去遵循以下的。详情请见这篇博客:建立索引常用的规则。
MySQL -- 调优的更多相关文章
- MySQL 调优/优化的 100 个建议
MySQL 调优/优化的 100 个建议 MySQL是一个强大的开源数据库.随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈.这里提供 101 条优化 MySQL 的建议.有些技巧适合特定 ...
- MySQL 调优基础(一) CPU与进程
一般而言,MySQL 的调优可以分为两个层面,一个是在MySQL层面上进行的调优,比如SQL改写,索引的添加,MySQL各种参数的配置:另一个层面是从操作系统的层面和硬件的层面来进行调优.操作系统的层 ...
- MySQL调优系列基础篇
前言 有一段时间没有写博客了,整天都在忙,上班,录制课程,恰巧最近一段时间比较清闲,打算弄弄MYSQL数据库. 关于MySQL数据库,这里就不做过多的介绍,开源.免费等特性深受各个互联网行业喜爱,尤其 ...
- mysql调优 基础
MySQL调优可以从几个方面来做: 1. 架构层:做从库,实现读写分离: 2.系统层次:增加内存:给磁盘做raid0或者raid5以增加磁盘的读写速度:可以重新挂载磁盘,并加上noatime参数,这样 ...
- mysql调优最大连接数
一.mysql调优 1.1 报错: Mysql: error 1040: Too many connections 1.2 原因: 1.访问量过高,MySQL服务器抗不住,这个时候就要考虑增加从服务器 ...
- MySQL调优 —— Using temporary
DBA发来一个线上慢查询问题. SQL例如以下(为突出重点省略部分内容): select distinct article0_.id, 等字段 from article_table article ...
- 数据库MySQL调优实战经验总结<转>
数据库MySQL调优实战经验总结 MySQL 数据库的使用是非常的广泛,稳定性和安全性也非常好,经历了无数大小公司的验证.仅能够安装使用是远远不够的,MySQL 在使用中需要进行不断的调整参数或优化设 ...
- MySQL调优 优化需要考虑哪些方面
MySQL调优 优化需要考虑哪些方面 优化目标与方向定位 总体目标:使得响应时间更快,吞吐量更大. (throughout --- 吞吐量:单位时间内处理事务的数量) 如何找到需要优化的地方 使用 ...
- MySQL调优系列_日志分析
前言 本篇主要总结一下MySQL数据库的几种日志,用于日常维护过程中问题解决和性能优化等,稍显基础,日常积累之用. 文章的部分内容会将MySQL数据库和SQL Server数据库部分内容做一个对比,非 ...
- MySQL 调优基础(四) Linux 磁盘IO
1. IO处理过程 磁盘IO经常会成为系统的一个瓶颈,特别是对于运行数据库的系统而言.数据从磁盘读取到内存,在到CPU缓存和寄存器,然后进行处理,最后写回磁盘,中间要经过很多的过程,下图是一个以wri ...
随机推荐
- 洛谷 P2639 [USACO09OCT]Bessie的体重问题Bessie's We… 题解
题目传送门 这也是个01背包,只是装的很... #include<bits/stdc++.h> #define MAXN 45010 using namespace std; int f[ ...
- android 代码设置、打开wifi热点及热点的连接(转)
用过快牙的朋友应该知道它们在两天设备之间传输文件的时候使用的是wifi热点,然后另一台便连接这个热点再进行传输.快牙传输速度惊人应该跟它的这种机制有关系吧.不知道它的搜索机制是怎样的,但我想应该可 ...
- Delphi idHttpServer接收Http Get请求解码问题
引用 Httpapp单元,使用Httpdecode函数进行解码 procedure TFrmMain.HTTPServerCommandGet(AThread: TIdPeerThread; AReq ...
- ubuntu 依赖问题
ubuntu想装个QQ,无奈安装不但出错,还导致现在的软件依赖出了问题 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 您也许需要运行“apt --fix-b ...
- C51中的xdata
今天在写公司芯片对应的.H文件时,在定义寄存器的时候出现一个问题. 我们芯片的寄存器地址是定义在片外RAM区的,不能使用sfr这样的关键字来进行定义. 后来查阅了对应的资料才发现定义寄存器有很多种方法 ...
- 图像 & 视频
Python图像处理库:Pillow 初级教程 用Python做图像处理 python 视频处理,提取视频相关帧,读取Excel
- linux-ARM的几个使用指令
1.u-boot.bin arm-linux-gnueabi-objdump -D -b binary -m arm u-boot.bin > u-boot.s arm-linux-gnueab ...
- cinder 挂载卷和 iSCSI原理
LVM名称介绍 PV:物理磁盘 VG:卷组,多个PV可以组成一个VG,一个VG可以划分成多个LV(逻辑卷). PP:物理区块,将一个VG逻辑的划分成连续的小块. LP:逻辑区块,若干个PP组成一个LP ...
- king's trouble II SCU - 4488
Time Limit: 1000 MS Memory Limit: 131072 K Description Long time ago, a king occupied a vast territo ...
- [BJOI2017]魔法咒语 --- AC自动机 + 矩阵优化
bzoj 4860 LOJ2180 洛谷P3175 [BJOI2017]魔法咒语 题目描述: Chandra 是一个魔法天才. 从一岁时接受火之教会洗礼之后,Chandra 就显示出对火元素无 ...