每个 MySQL 开发者都应该了解的 10 个技巧 已翻译 100%

oschina 投递于 2013/08/20 08:31 (共 12 段, 翻译完成于 08-20)
阅读 11418
收藏 498
24
加载中

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

mysql

Garfielt
翻译于 2013/08/20 09:14
5

避免编辑转储文件

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

Garfielt
翻译于 2013/08/20 09:20
2

MyISAM 块大小

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

Garfielt
翻译于 2013/08/20 09:27
2

打开 Delay_Key_Write

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

Garfielt
翻译于 2013/08/20 09:34
2

Joins(表连接)

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

Garfielt
翻译于 2013/08/20 09:41
1

优化WHERE从句

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

Garfielt
翻译于 2013/08/20 10:01
2

在Select查询上使用Explain关键字

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

Garfielt
翻译于 2013/08/20 10:08
1

使用查询缓存优化查询

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

Garfielt
翻译于 2013/08/20 10:13
1

使用堆栈跟踪隔离Bug

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

Garfielt
翻译于 2013/08/20 10:17
1

设置SQL_MODE

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

//Start mysqld with
$–sql-mode=”modes”
//or
$sql-mode=”modes” (my.ini – Windows / my.cnf – Unix)
//Change at runtime, separate multiple modes with a comma
$set [GLOBAL|SESSION] sql_mode=’modes’
//TRADITIONAL is equivalent to the following modes:
STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, ERROR_FOR_DIVISION_BY_ZERO, and NO_AUTO_CREATE_USER

修改Root密码

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

//Straightforward MySQL 101
$mysqladmin -u root password [Type in selected password]
//Changing users ROOT password
$mysqladmin -u root -p [type old password] newpass [hit enter and type new password. Press enter]
//Use mysql sql command
$mysql -u root -p
//prompt “mysql>” pops up. Enter:
$use mysql;
//Enter user name you want to change password for
$update user set password=PASSWORD (Type new Password Here) where User = ‘username’;
//Don’t forget the previous semicolon, now reload the settings for the users privileges
$flush privileges;
$quit

bigtiger02
翻译于 2013/08/20 13:29
2
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(38)

大U
大U
留待备用
JoannaQ
JoannaQ
mark, refer to see Original English artical
kstrain
kstrain
mark
Garfielt
Garfielt

引用来自“keepzero”的评论

这什么鸟翻译啊,完全谷歌翻译照搬过来的。“从防止数据库每次写MyISAM文件时刷新密钥文件方面看这是必要的”,MyISAM key 索引居然翻译成密钥

不语!谢谢指正!
__alias
__alias
学习
hhy
hhy
mark
苏生不惑
苏生不惑
SQL_MODE设置成哪个好呢?没理解delay_key_write是干嘛的
军师
已经转了。
Marvelous
Marvelous

引用来自“ErYe”的评论

引用来自“Marvelous”的评论

引用来自“ErYe”的评论

引用来自“Marvelous”的评论

我用mysqldump 做了一个自动备份的工具 可惜这个命令不会返回成功与否 所以我的工具也没提示- - 正在考虑用(如果没提示错误 就代表成功)的做法

一般来说,最好是两步来完成,第一步是自动备份的脚本,第二步是检查备份文件,可以通过文件大小,日志都可以判断。

备份可以这样 但是还原是否成功呢?怎么判断?

还原也是自动的吗?
手动的把所有日志都导入到日志文件,然后检查日志文件即可。
mysqdump导出的数据都是一条条的insert语句,如果有某个错误,会中间终止掉,所以你可以通过这个途径去检查你还原是否完成,具体做法可以在想想。

还原不是自动的,还原用的是mysql.exe 成功是没有提示的 所以我现在还原也没提示 我会试下你说的方案 谢了哦
世尘悉洞
世尘悉洞
mark
返回顶部
顶部