三险即:养老保险、失业保险、医疗保险。
一金即:住房公积金(购房按揭时所用)。

每个地区的缴费比例可能不太一样,有些公司可能是五险一金。下面以北京三险一金为例,用mysql存储过程来查询你的三险一金以及你的收入,呵呵,也许你会发现你到手的收入只有你实际工资的一半哦。(参考了网上的PL/SQL过程)。

例如你的工资为5000元,那么你的实际收入情况如下:

mysql> call calc_salary(5000);
+———————————————–+
| income_info |
+———————————————–+
| pension_insurance_1(20.00%) : 1000.00 |
| pension_insurance_2(8.00%) [...]

mk-query-digest 一个功能很强大的工具,能分析慢查询日志,也可以对当前的语句进行分析等。安装方法查看这里。

一、分析慢查询日志,生成报表
mysql通过log-slow-queries和long_query_time参数来记录慢查询,默认的格式如下:

# Time: 090909 4:34:28
# User@Host: sparty[sparty] @ [localhost]
# Query_time: 18 Lock_time: 0 Rows_sent: 5 Rows_examined: 52830
select * from test;
# Time: 090909 14:04:24
# User@Host: sparty[sparty] @ [localhost]
# Query_time: 20 Lock_time: 0 Rows_sent: 10 Rows_examined: 2500284
select * from test2;

每产生一条慢查询记录一行,分析起来不直观,也无法进行统计。mk-query-digest能对slow log进行了统计和分析产生报告,可以更具自己的需要,分析出想要的结果。例如

mk-query-digest –limit 2 –select Query_time,Lock_time,Rows_sent,Rows_examined,ts slow.log \
|grep -v [...]

Oracle实现Mysql里的G标志

Leave a Comment2009年09月16日 作者: 大头刚 

这篇文章我曾经在chinaunix的blog发表过,现在转过来。
mysql中提供了一个G [g] 标志,放到sql语句后,可以使一行的每个列打印到单独的行。例如:

mysql> select * from test limit 2\G;
*************************** 1. row ***************************
test1: 0
test2: 0
test3: 0
*************************** 2. row ***************************
test1: 0
test2: 0
test3: 0
2 rows in set (0.02 [...]

使用Mysql的小技巧总结

Leave a Comment2009年09月02日 作者: 大头刚 

使用Mysql也很长一段时间了,在使用的过程中遇到过各种各样的问题,有些看上去很小的问题,在解决的过程中却花了很长时间,解决后才发现,原来这样简单。所以总结了一些经验和技巧,把它写出来,希望对读者能有所帮助,少走弯路。

1. binary
BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。举例:

mysql> select * from tjob;
+——-+
| title |
+——-+
| 11 |
| 22 |
| 33 |
| aa |
| bb |
| cc |
| AA |
| BB | [...]

Mysql里SQL调优公式及案例

1 Comment2009年08月27日 作者: 大头刚 

SQL调优公式T=S/V (此公式来源于互联网,本文只是引用)

S指sql所需处理的资源总量,V指sql单位时间所能处理的资源量,T自然就是SQL执行所需时间了。

这个公式很简单,调优的目标是减少T,T=S/V,很简单的数学题,要减小值,那就只能是减小分子,或者是增大分母了。那么调整的对象自然就要放到这里的S和V上,所以调优的方法就是围绕减少S和增大V。

增大V,在硬件设备不变、参数不变的情况下,能控制的似乎不太多?
减少S(sql所需访问的资源总量),这通常是调优工作的重中之重,SQL调优的主要目的就是围绕着如何减少S在进行。在Mysql里,我觉得就是减少rows值,一条SQL执行所读写的rows数直接影响到SQL的执行时间。

下面举一个我在调优mysql查询的例子,需求是需要查出被点击数最大的16篇文章记录,sql如下:

mysql> select uid from test where status=1 order by today_hit desc limit 16;
+———-+
| uid |
+———-+
| 22380047 |
| 6264708 |
| 17318093 |
| 3412287 |
| 21542034 |
| 21542034 |
| 16929428 |
| 16929428 |
| 11994313 |
| 12234372 |
| 21938539 [...]