MySQL核心内幕

mysqle6a0b8e5bf83e58685e5b99512334

教你写MySQL UDF

第一次听说UDF是,一片懵懂。还被一个半桶水的培训师忽悠说是存储函数即是UDF。现在想来真是匪夷所思,害人不浅。


从名字上可以得知UDF(user define function)为用户自定义函数。UDF在一定程度上可以使得普通用户定制自己的MySQL函数库,减少对内建函数的依赖。UDF 的功能还是非常强大的。


各类技术人员都可以开发相应的UDF。

管理员可以开发一些与系统交互的UDF。而开发人员可将常用功能用UDF替代存储函数,这样可以大幅提高执行速度和效率。


      » 继续阅读 教你写MySQL UDF

一个MySQL字符集小问题

前不久Moblin的项目要本地化,开发人员需要发行一个中文版(测试中),在网页上方language的地方有个选择语言的下拉框,显示“简体中文”选项有问题,不是出现问号就是小方格。问题之初就定位到数据库字符集,但是在调试个级别字符集的过程中,通过mysql客户端以及sqlyog GUI工具的查看都正常可以看到汉字,但是前端应用界面始终不正常,于是便开始怀疑是不是webrick不支持中文输出呢,但是其他部分的中文都可以正常输出,后来重新回到到MySQL上。

情景:最初设置的字符集,能够满足通过前段应用程序输入中文,同时显示也没有问题。其中,恰恰有一个表中的一个字段是需要开发人员从后台直接向数据库中插入汉字——“简体中文”。这时,如果用原有的字符集设置就存在上述问题。

前后调整如下:

调整前:

服务器级:character_set_server = utf8

数据库级:character_set_database = utf8

表级:default charset = utf8


      » 继续阅读 一个MySQL字符集小问题

移植Wordpress到另外一个域名

前段时间帮朋友把她的wordpress从www.sqlbean.com 移植到 www.lillian8.com

除开文件的备份和恢复之外,这里主要说说数据库方面的。

我们先看一下wordpress安装时,会生成哪些表?


+————————–+

| Tables_in_wordpress      |

+————————–+

| wp_comments              |

| wp_golfresult            |

| wp_golftable             |

| wp_links                 |

| wp_options               |

| wp_postmeta              |

| wp_posts                 |

| wp_statpress             |

| wp_term_relationships    |

| wp_term_taxonomy         |


      » 继续阅读 移植Wordpress到另外一个域名

备份个别数据库以及相应的权限

我们经常有这么一个需求,从mysql服务器甲上面移植几个数据库到服务器乙上面,如果仅仅如此,应该很简单。

如下移植数据库wpress和Jcms:
bash3-22 # mysqldump -u root -p --database wpress jcms > porting.sql

      » 继续阅读 备份个别数据库以及相应的权限

SQL中enum、varchar、int+join查询速度比较

下面作了个小测试,比较被查询字段分别使用enum、varchar和int(使用join)三种数据类型时的查询速度。

我先来介绍一下实验环境。mysql5.1下创建了4张表,分别是cities_enum、cities_varchar、cities_join和provinces,表结构如下:

表 cities_enum

enum

表 cities_varchar

varchar


      » 继续阅读 SQL中enum、varchar、int+join查询速度比较

存储过程、存储函数的性能优势

关于存储过程,非常多的人难以理解除了方便以外,它还带来了什么。

我用手头的机器做了下面一个测试。暂且先不管机器类型,和表结构(其实表结构类似于这个帖子里面)

DROP PROCEDURE IF EXISTS insert_n_rows;
delimiter //

CREATE PROCEDURE insert_n_rows (IN loops INT)
BEGIN
DECLARE count INT;
SET count =loops;
WHILE count > 0 DO
INSERT INTO my_table values(NULL,0,
‘wwwwwwmmmmmyyyyyysssssqqqqllllcccccoooooooomm’,
‘jjjjjjjjjjjjjjjjjjjjiiiiiiiiiiiiiiiiiiiiiddddddddddddddddeeeeeeeeee’);
SET count = count - 1;
END WHILE;

END;
//

delimiter ;

 
      » 继续阅读 存储过程、存储函数的性能优势

何时升级硬件,何时更新配置?

以前一直在MySQL的本家做咨询工作,所以我下面和大家讨论的话题是一个我在工作中经常遇到的问题。

什么时候我们应该升级硬件?什么时候应该修改配置?

作为DBA,老板和公司总是希望我们以最小的投入换来最大的性能(效益)。不过我并没有暗示大家,我接下讨论的话题,会是让各位避免购买硬件。

对于上面的答案很多人肯定会说两者都做,或者只做配置修改。我想我没有给大家出选择题,只是拿出来做任何一个考虑的时候,哪些因素影响着我们。我的回答经常是:

1.使劲优化MySQL服务器和查询语句


      » 继续阅读 何时升级硬件,何时更新配置?