Oracle一个典型行列转换的几种实现方法
Google订阅 | 鲜果榜 | Technorati | Delicious | Twitter | Taobao DBA | 招聘 | 合租 | 管理 | 阿里妈妈

Oracle一个典型行列转换的几种实现方法

假如有如下表,其中各个i值对应的行数是不定的

SQL> select * from t;

         I A          D
---------- ---------- -------------------
         1 b          2008-03-27 10:55:42
         1 a          2008-03-27 10:55:46
         1 d          2008-03-27 10:55:30
         2 z          2008-03-27 10:55:55
         2 t          2008-03-27 10:55:59

要获得如下结果,注意字符串需要按照D列的时间排序:

1  d,b,a
2  z,t

这是一个比较典型的行列转换,有好几种实现方法

[继续阅读全文]

2008中国ORACLE数据库精英工程师评选

又一次数据库方面的选秀活动,去看了一下,大致的方式还是和两年前的那个CSDN主办IBM赞助的“2006年中国首届杰出数据库工程师评选”差不多吧,CSDN和IBM搞了一次就偃旗息鼓了,估计也觉着吃力不太讨好。毕竟某一个具体技术的关注度,不能和超女快男来类比。而那一次还包容了DB2,Oracle,MS SQL Server等各个数据库的专家,加上CSDN在中国开发社区的影响力,应该还是有不少人关注的,最终评选出来的也确实都是业内的精英。

这一次Oracle一家来搞,面本来就窄了许多。而试着注册了一下,发现要正式参与还得有CSI,要么就要交30块钱,我看Oracle这次是傻到家了,做为一个推广活动,自然是参与度越高越好,这还没开始没知名度没关注度,就开始自己牛B了一把,加了这么多限制和门槛。不至于这么惨淡经营,要靠30块的门票来请人出考题做评委吧,呵呵。

而且,放着Itpub这么有影响力的社区坐旁观席,却搞了个诸禄网做主持人,还非得要注册他们家论坛,里面冷清得一个月也没几个帖子。嗯,有一个回帖说:“哈,还有人发言啊,不错”。

我很不看好你哦,2008中国ORACLE数据库精英工程师评选。

MySQL InnoDB存储引擎的事务隔离级别

我们知道,在关系数据库标准中有四个事务隔离级别:

查看InnoDB系统级别的事务隔离级别:

mysql> SELECT @@global.tx_isolation;
+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| REPEATABLE-READ       |
+-----------------------+
1 row in set (0.00 sec)

查看InnoDB会话级别的事务隔离级别:

mysql> SELECT @@tx_isolation;
+-----------------+
| @@tx_isolation  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)

修改事务隔离级别:

mysql> set global transaction isolation level read committed;
Query OK, 0 rows affected (0.00 sec)

mysql> set session transaction isolation level read committed;
Query OK, 0 rows affected (0.00 sec)

[继续阅读全文]

MySQL InnoDB存储引擎的一些参数

InnoDB做为MySQL目前最广泛的事务存储引擎,很多地方的设计和Oracle都是共通的。对于Oracle DBA来说,学习的时候可以多和Oracle的一些特性进行类比,当然也要明白二者之间的区别。

innodb_additional_mem_pool_size

用于缓存InnoDB数据字典及其他内部结构的内存池大小,类似于Oracle的library cache。这不是一个强制参数,可以被突破。

innodb_buffer_pool_size

内存缓冲池大小,用于缓存表和索引数据等。类似于Oracle的buffer cache,如果可能,尽可能的设置大一点。

innodb_log_buffer_size

日志缓冲区大小,类似于Oracle的log buffer

innodb_log_file_size

日志文件大小。默认会创建2个5M大小的名为ib_logfile0和ib_logfile1的文件。日志文件的数目由参数innodb_log_files_in_group指定。存放位置由innodb_log_group_home_dir指定。

innodb_data_file_path

指定InnoDB表空间数据文件名,大小以及其他属性。所有文件的加起来不能少于10M。多个数据文件之间以逗号分割,属性之间以冒号分割。默认创建一个大小10MB名为ibdata1的可自动扩展的数据文件,一般在生产环境中都需要根据实际情况指定,由于往表空间中添加数据文件需要停机,尽量在规划的时候做好准备,如果可以的话最好开启最后一个数据文件的自动增长属性。数据文件的个数在规划的时候还需要考虑另外一个innodb_open_files参数。

innodb_file_per_table

取值为ON或者OFF。是否为每个table使用单独的数据文件保存。如果系统中表的个数不多,并且没有超大表,使用该参数可以使得各个表之间的维护相对独立,有一定的好处。

innodb_autoextend_increment

当自动扩展表空间被填满之时,每次扩展空间的大小,默认值是8(单位MB)。该参数可以动态修改:

mysql> set global innodb_autoextend_increment=10;
Query OK, 0 rows affected (0.01 sec)

innodb_status_file

定期将show inndb status的结果输出保存到文件中,建议开启以便分析性能。

[继续阅读全文]