MySql的使用心得

来源:互联网 发布:石材效果图软件 编辑:程序博客网 时间:2024/05/16 01:38

最近用了一段时间的Mysql,再次谈谈个人的心得。

1-在不同的数据库之间进行数据的同步,实现如Oracle Copy命令的功能。

mysqldump -h db1host -uu1 -pp1 -P3306 db1name tabname –where “…” | mysql -h db2host -uu2 -pp2 -P3307 db2name
mysqldump 和mysql 搭配使用 非常方便,有很多参数,可以参见帮助文档
(注意 如果再通过时间字段实现增量导出,一定注意要加上 –tz-utc=FALSE,否则会因为导出时时区修改而造成数据遗漏或不及时)

2-mysql的时间函数(timestampdiff)
如timestampdiff(minute,a.access_time, b.access_time)
timestampdiff这个函数用起来非常方便。在oracle中我们可能通过两时间做差或Months_between等函数实现类似功能。
3-find_in_set函数
如果有两个字段,其中一个是逗号分隔的字符串集合,另外一个字段是单一字符串,如果想要这两个字段做关联,该函数就非常有用。此函数常搭配group_concat一起使用。
4-binlog日志

binlog开启后可以记录针对数据库的所有操作,可用于数据恢复。但是该功能比较耗资源。(flexview工具利用此特性简介实现了Oracle的cdc的功能)
5-执行计划
mysql的执行计划以及对执行路径的决策方面的远远没有Oracle强大,但是分析思路都差不多。
直接通过explain 后跟你的sql即可。

mysql> explain select * from tb_lesson where up_type_code=2622;
+—-+————-+———–+——+——————-+——+———+——+——-+————-+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+—-+————-+———–+——+——————-+——+———+——+——-+————-+
| 1 | SIMPLE | tb_lesson | ALL | idx_tb_lesson_com | NULL | NULL | NULL | 35817 | Using where |
+—-+————-+———–+——+——————-+——+———+——+——-+————-+

6-基于Mysql的数据仓库。
在此推荐个人使用的两个引擎:
infiniDB和inforbright
这两个引擎都是基于列存储的,查询效率极高。