每个 MySQL 开发者都应该了解的 12 个技巧

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

MySQL是世界上实际最流行的数据库管理系统,是遍布全球编程社区的首选。它有一个系列有趣的特性,在很多方面都很擅长。由于其巨大的人气,在网上可以找到许多MySQL的使用技巧。这里有12个最好的技巧和窍门,所有MySQL数据库开发者都应该了解一下。

mysql

mysql

1、避免编辑转储文件

Mysqldump创建的转储文件原本是无害的,但它很容易被尝试去编辑。然而,人们应该知道在任何情况下的试图修改这些文件被证明是有危险的。直观地看对这些文件的改动会导致数据库损坏,从而导致系统的退化。为了让你的系统免受任何麻烦,你必须避免编辑MySQL转储文件。

2、MyISAM 块大小

大多数开发者忘记了这一事实,文件系统往往需要一个大的MyISAM块以保证高效运行。许多开发者不知道块大小的设置。.MYI文件存储在myisam_block_size的设置里,这个设置项可用来修改大的块尺寸。MyISAM块大小的默认值是1K,这不是当前大多数系统的恰当设置。因此,开发者应该考虑指定一个与之相适应的值。

3、打开 Delay_Key_Write

为避免系统崩溃时数据库损坏delay_key_write默认是关闭的。有人可能会问,如果是这样的话,为什么要把它放在首位打开呢?从防止数据库每次写MyISAM文件时刷新密钥文件方面看这是必要的。通过把它打开,开发者可以节省很多时间。参考MySQL官方手册了解你的版本如何把它打开。

4、Joins(表连接)

创建索引和使用相同的列类型:join(表连接)操作可以在Mysql中被优化。若应用中有许多join操作,可以通过创建相同的列类型上join来优化。创建索引是加速应用的另一种方法。查询修改有助于你找回期望的查询结果。

5、优化WHERE从句

即使你只搜索一行MySQL也会查询整个表,因此,建议你当只需要一条结果时将limit设置为1。通过这样做,可以避免系统贯穿搜索整个表,从而可以尽可能快找到与你需求相匹配的记录。

6、在Select查询上使用Explain关键字

你肯定希望得到与任何特定查询相关的一些帮助。Explain关键词在这方面是非常有帮助的。它在你寻求查询到底做了什么时提供了具体细节。例如,在复杂join查询前键入Explain关键词你会得到很多有用的资料。

7、使用查询缓存优化查询

MySQL的查询缓存是默认启用的。这主要是因为缓存有助于查询的快速执行,缓存可以在相同的查询多次运行使用。你在关键字前加入当前日期、CURRDATE等PHP代码使查询缓存它从而启用此功能。

8、使用堆栈跟踪隔离Bug

各种Bug可以使用stack_trace隔离出来。一个空指针足以毁掉一段特定的代码,任何开发人员都知道它有这样的能力。了解使用堆栈跟踪的细节,从而在你的代码里避免bug。

9、设置SQL_MODE

枚举类型总是让人感到非常的疑惑。由于字段可能拥有多个可能的值,这些可能的值包括你指定的和null,在编码时将会出现很多问题,你将永远都会得到一个警告说代码不正确。一个简单的解决办法就是设置SQL_MODE。

// 用以下参数启动mysqld
$–sql-mode=”modes”
// 或者在my.ini或 my.cnf 里面设置如下选项
$sql-mode=”modes” 
// 也可以在运行时直接设置,使用逗号分隔模式
$set [GLOBAL|SESSION] sql_mode=’modes’
// TRADITIONAL 模式等价于下列模式:STRICT_TRANS_TABLES, STRICT_ALL_TABLES, 
// NO_ZERO_IN_DATE, ERROR_FOR_DIVISION_BY_ZERO 和 NO_AUTO_CREATE_USER

10、修改Root密码

修改root密码对于某些特定设置是必不可少的,修改命令如下:

// 使用mysqladmin的password命令来修改(4.1格式)
$mysqladmin -u root password [新口令]
// 旧的修改口令的方法
$mysqladmin -u root -p [旧口令] 新口令 [敲回车后输入新口令,然后回车]
// 使用mysql的命令
$mysql -u root -p
mysql> use mysql;
mysql> update user set password=新口令 where User = ‘用户名’;
mysql> flush privileges;
mysql> quit

11、用MySQL Dump 命令备份数据库

开发者都知道数据库备份的重要性,当系统出现重大故障时能够起到救命的作用。

最简单的备份数据库的方法

$mysqldump –user [user name] –password=[password] [database name] > [dump file]

你也可以用简写"-u","-p"来分别代替"user"和"password" 
将多个数据库导入到一个文件只要在后面添加需要导出数据库的名称: 

mysqldump –user [user name] –password=[password] [first database name] [second database name] > [dump file]

许多数据库都提供了顺序备份的功能,要备份所有数据库只需要添加--all-databases参数。如果你不喜欢命令行,从Sourceforge上下载automysqlbackup吧。

12、调整CONFIG的配置

PERL脚本MySQL Tuner ( http://mysqltuner.com/‎ )是另一个强大的优化数据库性能的工具,它能够帮助你对MySQL配置来进行多处调整和修改。你可以访问该项目的官网来进一步了解它。

 

原文发布时间为:2013-08-21

本文来自云栖社区合作伙伴“Linux中国”

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL Serverless
《开发者评测》之PolarDB MySQL 版 Serverless评测活动获奖名单
PolarDB MySQL 版 Serverless评测最优奖、潜力奖、争优奖获奖名单正式公布!
|
存储 SQL 前端开发
【初级】MySQL 开发者规范 | 学习笔记
快速学习【初级】MySQL 开发者规范,介绍了【初级】MySQL 开发者规范系统机制, 以及在实际应用过程中如何使用。
159 0
【初级】MySQL 开发者规范 | 学习笔记
|
SQL 分布式计算 druid
2021 年数据库报告:PostgreSQL 成开发者首选 | Benchmark 测试陷“混战”
2021 年数据库报告:PostgreSQL 成开发者首选 | Benchmark 测试陷“混战”
219 0
2021 年数据库报告:PostgreSQL 成开发者首选 | Benchmark 测试陷“混战”
|
存储 并行计算 搜索推荐
【学习视频】第3期2020-PostgreSQL+MySQL 联合解决方案课程 - 适合架构师与业务开发者
大家好,这里是PostgreSQL+MySQL 联合解决方案课程 - 汇总视频、课件
|
数据采集 并行计算 搜索推荐
PostgreSQL技术周刊第31期:应用开发者指南(第11节)
【点击订阅PostgreSQL技术周刊】 PostgreSQL(简称PG)的开发者们:云栖社区已有5000位PG开发者,发布了3000+PG文章(文章列表),沉淀了700+的PG精品问答(问答列表)。
2111 0
|
存储 监控 搜索推荐
PostgreSQL技术周刊第30期:应用开发者指南
【点击订阅PostgreSQL技术周刊】 PostgreSQL(简称PG)的开发者们:云栖社区已有5000位PG开发者,发布了3000+PG文章(文章列表),沉淀了700+的PG精品问答(问答列表)。
18536 0
|
Oracle 关系型数据库 数据库
PostgreSQL技术周刊第28期:应用开发者指南
【点击订阅PostgreSQL技术周刊】 PostgreSQL(简称PG)的开发者们:云栖社区已有5000位PG开发者,发布了3000+PG文章(文章列表),沉淀了700+的PG精品问答(问答列表)。
3979 0
|
SQL 关系型数据库 PHP