MySQL疑难

MySQL疑难
MySQL BUG
MySQL 问题

Percona 5.6.6里坑人的index_condition_pushdown

1. 确认optimizer_switch的设置:

使用Percona 5.5版本的用户请注意了

以前使用percona 5.0系列版本,一直顺风顺水的,没碰到什么问题。最近尝试了一下5.5.10(以及5.5.12)版本,结果碰到bug了 :(
问题现象简述:

技术相关:

[MySQL FAQ]系列 -- show engine innodb status显示信息不全?

问题:
执行 show engine innodb status\G 时,显示的信息不全,DEADLOCK相关信息太多,后面的都没了

原因:
这是mysql客户端的一个bug:BUG#19825,交互式客户端限制了输出信息最大为 64KB,因此更多的信息无法显示。

无需过分关注Created_tmp_disk_tables

通常地,我们习惯以 Created_tmp_tables/(Created_tmp_disk_tables + Created_tmp_tables) 或者已各自的一个时段内的差额计算,来判断基于内存的临时表利用率。所以,我们会比较关注 Created_tmp_disk_tables 是否过多,从而认定当前服务器运行状况的优劣。

技术相关:

MySQL 5.1中IN查询不要用到NULL条件

原文见:http://pento.net/2009/04/08/dont-put-a-null-in-the-in-clause-in-51/

如果在 IN 语句中用到 NULL 条件, 会导致全表扫描:

CREATE TABLE foo (
a INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (a)
);

技术相关:

[MySQL FAQ]系列 -- 为何授权不对

前言: 今天帮同事处理了一个关于mysql授权的问题,虽是小事,不过不注意的话,还挺头大的,呵呵。
先对比看看下面2个授权信息之间的区别吧:

GRANT SELECT, DELETE, UPDATE, INSERT ON *.* TO 'yejr'@'192.168.0.1' IDENTIFIED BY PASSWORD '*1088950C531DC1BE311435F60B57145D8A49019C'

GRANT SELECT, DELETE, UPDATE, INSERT ON `*`.* TO 'yejr'@'192.168.0.1' IDENTIFIED BY PASSWORD '*1088950C531DC1BE311435F60B57145D8A49019C'

呵呵,看起来都很像,没什么问题吧,实际反映到数据库授权表结果变成了:

[MySQL优化案例]系列 -- 频繁创建临时表

REPAIR TABLE导致死锁

问题表现:
以 discuz 论坛的帖子数据表(cdb_posts)为例,该表有 887106 条记录,正常情况下,在一个 P4 2.4G、1G 内存的 PC 机上执行 REPAIR TABLE 的耗时大概 95s,如下:

mysql> SHOW GLOBAL VARIABLES LIKE 'myisam_repair_threads';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| myisam_repair_threads | 1     | 
+-----------------------+-------+

mysql> REPAIR TABLE cdb_posts;
+-----------------+--------+----------+----------+
| Table           | Op     | Msg_type | Msg_text |
+-----------------+--------+----------+----------+
| Forum.cdb_posts | repair | status   | OK       | 
+-----------------+--------+----------+----------+
1 row in set (1 min 35.58 sec)

技术相关:

我在CU上整理的MySQL FAQ

译者:叶金荣(Email:),来源:MySQL手册版本 5.0.1-alpha,转载请注明译者,并且不能用于商业用途,违者必究。

Q: 如何安装LAMP(Linux+Apache+MySQL+PHP)
A:[url]http://www.freelamp.com/1003235699/index_html[/url]

Q: 如何使用rpm方式安装mysql
A:首先下载合适的rpm包,例如下载了文件 MySQL-5.0.15-0.i386.rpm
用一下方法安装:
#rpm -ivhU MySQL-5.0.15-0.i386.rpm
通常情况下,安装完这个rpm包后,只具备有mysqld服务功能,其它相关的client程序和开发包还需要另外安装
#rpm -ivhU MySQL-devel-5.0.15-0.i386.rpm
#rpm -ivhU MySQL-client-5.0.15-0.i386.rpm

Q: 如何安装已经编译好了的mysql二进制包

小谈MySQL字符集

首先,这片文章纯粹是我的个人经验之谈,适用于我常见的环境及项目中.
个人建议,数据库字符集尽量使用utf8(HTML页面对应的是utf-8),以使你的数据能很顺利的实现迁移,因为utf8字符集是目前最适合于实现多种不同字符集之间的转换的字符集,尽管你在命令行工具上可能无法正确查看数据库中的内容,我依然强烈建议使用utf8作为默认字符集.
接下来是完整的一个例子:
1.创建数据库表

Subscribe to RSS - MySQL疑难