竹磬网-邵珠庆の日记 生命只有一次,你可以用它来做些更多伟大的事情–Make the world a little better and easier


45月/140

win7下几个常用的组合键

发布在 邵珠庆

1.Win+D: 这是高手最常用的第一快捷组合键。这个快捷键组合可以将桌面上的所有窗口瞬间最小化,无论是聊天的窗口还是游戏的窗口只要再次按下这个组合键,刚才的所有窗口都回来了,而且激活的也正是你最小化之前在使用的窗口! 
 
2.Win+F:不用再去移动鼠标点“开始→搜索→文件和文件夹”了,在任何状态下,只要一按Win+F就会弹出搜索窗口。

3.Win+R:在我们的文章中,你经常会看到这样的操作提示:“点击‘开始→运行’,打开‘运行’对话框。其实,还有一个更简单的办法,就是按Win+R 
 
4.Alt+Tab:如果打开的窗口太多,这个组合键就非常有用了,它可以在一个窗口中显示当前打开的所有窗口的名称和图标,选中自己希望要打开的窗口,松开这个组合键就可以了。而alt+tab+shift键则可以反向显示当前打开的窗口。 
 
5.Win+E:当你需要打开资源管理器找文件的时候,这个快捷键会让你感觉非常“爽”!再也不用腾出一只手去摸鼠标了! 

6.Win:就是开始菜单咯。

很实用的几个组合键与大家分享.外加微软快捷键大全

Windows 7是微软公司即将发布的一款新一代操作系统,据悉,微软公司已于7月中旬将RTM版本交付PC生产厂商,并将在2009年10月正式上市。此前微软已经就Windows 7发布过多个测试版,根据网友试用,无论是界面,硬件需求,还是性能,相比Vista都有很大改善。
以下是微软官方发布的Windows 7操作系统快捷键的应用解释:
1. 轻松访问键盘快捷方式
按住右Shift 八秒钟: 启用和关闭筛选键
按左 Alt+左 Shift+PrtScn(或 PrtScn):启用或关闭高对比度
按左 Alt+左 Shift+Num Lock :启用或关闭鼠标键
按 Shift 五次: 启用或关闭粘滞键
按住 Num Lock 五秒钟:启用或关闭切换键
Windows 徽标键 + U : 打开轻松访问中心
2. 常规键盘快捷方式
F1 显示帮助
Ctrl+C  复制选择的项目
Ctrl+X  剪切选择的项目
Ctrl+V  粘贴选择的项目

Ctrl+Z  撤消操作
Ctrl+Y  重新执行某项操作
Delete  删除所选项目并将其移动到“回收站”
Shift+Delete  不先将所选项目移动到“回收站”而直接将其删除
F2 重命名选定项目
Ctrl+向右键 将光标移动到下一个字词的起始处
Ctrl+向左键 将光标移动到上一个字词的起始处
Ctrl+向下键 将光标移动到下一个段落的起始处
Ctrl+向上键 将光标移动到上一个段落的起始处
Ctrl+Shift 加某个箭头键 选择一块文本
Shift 加任意箭头键 在窗口中或桌面上选择多个项目,或者在文档中选择文本
Ctrl 加任意箭头键+空格键 选择窗口中或桌面上的多个单个项目
Ctrl+A 选择文档或窗口中的所有项目
F3 搜索文件或文件夹
Alt+Enter 显示所选项的属性
Alt+F4 关闭活动项目或者退出活动程序
Alt+空格键 为活动窗口打开快捷方式菜单
Ctrl+F4 关闭活动文档(在允许同时打开多个文档的程序中)
Alt+Tab 在打开的项目之间切换
Ctrl+Alt+Tab 使用箭头键在打开的项目之间切换
Ctrl+鼠标滚轮 更改桌面上的图标大小
Windows 徽标键 + Tab 使用 Aero Flip 3-D 循环切换任务栏上的程序
Ctrl + Windows 徽标键 + Tab 通过 Aero Flip 3-D 使用箭头键循环切换任务栏上的程序
Alt+Esc 以项目打开的顺序循环切换项目
F6 在窗口中或桌面上循环切换屏幕元素
F4 在 Windows 资源管理器中显示地址栏列表
Shift+F10 显示选定项目的快捷菜单
Ctrl+Esc 打开「开始」菜单
Alt+加下划线的字母 显示相应的菜单
Alt+加下划线的字母 执行菜单命令(或其他有下划线的命令)
F10 激活活动程序中的菜单栏
向右键 打开右侧的下一个菜单或者打开子菜单
向左键 打开左侧的下一个菜单或者关闭子菜单
F5 刷新活动窗口
Alt+向上键 在 Windows 资源管理器中查看上一级文件夹
Esc 取消当前任务
Ctrl+Shift+Esc 打开任务管理器
** CD 时按住 Shift 阻止 CD 自动播放
3. 对话框键盘快捷方式
Ctrl+Tab  在选项卡上向前移动
Ctrl+Shift+Tab  在选项卡上向后移动
Tab  在选项上向前移动
Shift+Tab  在选项上向后移动
Alt+加下划线的字母  执行与该字母匹配的命令(或选择选项)
Enter  对于许多选定命令代替单击鼠标
空格键 如果活动选项是复选框,则选中或清除该复选框
箭头键 如果活动选项是一组选项按钮,则选择某个按钮
F1 显示帮助
F4 显示活动列表中的项目
Backspace 如果在“另存为”或“打开”对话框中选中了某个文件夹,则打开上一级文件夹

4. Windows 徽标键相关的快捷键
Windows徽标键就是显示为Windows旗帜,或标有文字Win或Windows的按键,以下简称Win键。XP时代有4个经典的 Win 键组合:R/E/F/L。到了 Win7,花样更多了。
Win:打开或关闭开始菜单
Win + Pause:显示系统属性对话框
Win + D:显示桌面
Win + M:最小化所有窗口
Win + SHIFT + M:还原最小化窗口到桌面上
Win + E:打开我的电脑
Win + F:搜索文件或文件夹
Ctrl + Win + F:搜索计算机(如果您在网络上)
Win + L:锁定您的计算机或切换用户
Win + R:打开运行对话框
Win + T:切换任务栏上的程序(感觉是和alt+ESC 一样 )
Win + 数字:让位于任务栏指定位置(按下的数字作为序号)的程序,新开一个实例。(感觉这个比较新颖,貌似快速启动。) Shift + Windows logo key +number:Start a new instance of the program pinned to the taskbar in the position indicated by the number
Ctrl + Win + 数字:让位于任务栏指定位置(按下的数字作为序号)的程序,切换到上一次的活动窗口。 Ctrl+Windows logo key +number:Switch to the last active window of the program pinned to the taskbar in the position indicated by the number
ALT + Win + 数字:让位于任务栏指定位置(按下的数字作为序号)的程序,显示跳转清单。 Alt+Windows logo key +number: Open the Jump List for the program pinned to the taskbar in the position indicated by the number
Win + TAB:循环切换任务栏上的程序并使用的Aero三维效果
Ctrl + Win + TAB:使用方向键来循环循环切换任务栏上的程序,并使用的Aero三维效果
按Ctrl + Win + B:切换到在通知区域中显示信息的程序
Win + 空格:预览桌面
Win + ↑:最大化窗口
Win + ↓:最小化窗口
Win + ←:最大化到窗口左侧的屏幕上
Win + →:最大化窗口到右侧的屏幕上
Win + Home:最小化所有窗口,除了当前激活窗口
Win+ SHIFT + ↑:拉伸窗口的到屏幕的顶部和底部
Win+ SHIFT + →/←:移动一个窗口,从一个显示器到另一个
Win + P:选择一个演示文稿显示模式
Win + G:循环切换侧边栏的小工具
Win + U:打开轻松访问中心
Win + x:打开Windows移动中心
5. Windows Explorer相关快捷键
Ctrl+N 打开新窗口
Ctrl+Shift+N 新建文件夹
End 显示活动窗口的底部
Home 显示活动窗口的顶部
F11 最大化或最小化活动窗口
Num Lock+小键盘星号(*) 显示选中文件夹的所有子文件夹
Num Lock+小键盘加号(+) 显示选中文件夹的内容
Num Lock+小键盘减号(-) 折叠选中文件夹
左方向键 折叠当前展开的选中文件夹或选中上层文件夹
Alt+Enter 打开选中项目的属性对话框
Alt+P 显示预览窗格
Alt+左方向键 切换到前一次打开的文件夹
右方向键 显示(展开)当前选中项目或选中第一个子文件夹
Alt+右方向键 切换到下一次后打开的文件夹
Alt+上方向键 打开上层文件夹
Ctrl+鼠标滚轮 改变文件和文件夹图标的大小和外观
Alt+D 选中地址栏(定位到地址栏)
Ctrl+E 选中搜索框(定位到搜索框)
6. 放大镜键盘快捷方式
Windows 徽标键 + 加号或减号 放大或缩小
Ctrl+Alt+空格键 显示鼠标指针
Ctrl+Alt+F 切换到全屏模式
Ctrl+Alt+L 切换到镜头模式
Ctrl+Alt+D 切换到停靠模式
Ctrl+Alt+I 反色
Ctrl+Alt+箭头键 按箭头键的方向平移
Ctrl+Alt+R 调整镜头的大小
Windows 徽标键 + Esc 退出放大镜
7. 远程桌面相关快捷键
Alt+Page Up 按从左向右顺序切换程序
Alt+Page Down 按从右向左切换程序
Alt+Insert 按程序打开先后顺序循环切换程序
Alt+Home 显示“开始”菜单
Ctrl+Alt+Break 在窗口模式和全屏之间切换
Ctrl+Alt+End 显示Windows安全性对话框
Alt+Delete 显示当前窗口的系统菜单
Ctrl+Alt+-(小键盘减号) 当前活动窗口截图
Ctrl+Alt++(小键盘加号) 全屏截图
Ctrl+Alt+向右键 从远程桌面控件“跳转”到主机程序中的控件(如按钮或文本框)。将远程桌面控件嵌入到其他(主机)程序后,此功能非常有用。
Ctrl+Alt+向左键 从远程桌面控件“跳转”到主机程序中的控件(如按钮或文本框)。将远程桌面控件嵌入到其他(主机)程序后,此功能非常有用。
8. 画图键盘快捷方式
Ctrl+N 创建新的图片
Ctrl+O 打开现有图片
Ctrl+S 将更改保存到图片
F12 将此图片另存为新文件
Ctrl+P 打印图片
Alt+F4 关闭图片及其画图窗口
Ctrl+Z 撤消更改
Ctrl+Y 恢复更改
Ctrl+A 选择整个图片
Ctrl+X 剪切选择内容
Ctrl+C 将选择内容复制到剪贴板
Ctrl+V 从剪贴板粘贴选择内容
向右键 将选择内容或活动图形向右移动一个像素
向左键 将选择内容或活动图形向左移动一个像素
向下键 将选择内容或活动图形向下移动一个像素
向上键 将选择内容或活动图形向上移动一个像素
Esc 取消某个选择
Delete 删除某个选择
Ctrl+B 粗体选择文本
Ctrl++ 将画笔、直线或形状轮廓的宽度增加一个像素
Ctrl+- 将画笔、直线或形状轮廓的宽度减少一个像素
Ctrl+I 将所选文本改为斜体
Ctrl+U 为所选文本添加下划线
Ctrl+E 打开“属性”对话框
Ctrl+W 打开“调整大小和扭曲”对话框
Ctrl+Page Up 放大
Ctrl+Page Down 缩小
F11 以全屏模式查看图片
Ctrl+R 显示或隐藏标尺
Ctrl+G 显示或隐藏网格线
F10 或 Alt 显示快捷键提示
Shift+F10 显示当前快捷菜单
F1 打开“画图”帮助
9. 写字板的键盘快捷方式
Ctrl+N 新建一个文档
Ctrl+O 打开一个现有文档
Ctrl+S 将更改保存到文档
F12 将此文档另存为新文件
Ctrl+P 打印文档
Alt+F4 关闭“写字板”
Ctrl+Z 撤消更改
Ctrl+Y 恢复更改
Ctrl+A 选择整个文档
Ctrl+X 剪切选择内容
Ctrl+C 将选择内容复制到剪贴板
Ctrl+V 从剪贴板粘贴选择内容
Ctrl+B 将所选文本改为粗体
Ctrl+I 将所选文本改为斜体
Ctrl+U 为所选文本添加下划线
Ctrl+= 使选择的文本成为下标
Ctrl+Shift+= 使选择的文本成为上标
Ctrl+L 向左对齐文本
Ctrl+E 向中心对齐文本
Ctrl+R 向右对齐文本
Ctrl+J 对齐文本
Ctrl+1 设置单倍行距
Ctrl+2 设置双倍行距
Ctrl+5 将行距设置为 1.5
Ctrl+Shift+> 增加字体大小
Ctrl+Shift+< 减小字体大小
Ctrl+Shift+A 将字符更改为全部使用大写字母
Ctrl+Shift+L 更改项目符号样式
Ctrl+D ** Microsoft 画图图片
Ctrl+F 在文档中查找文本
F3 在“查找”对话框中查找文本的下一个实例
Ctrl+H 在文档中替换文本
Ctrl+向左键 将光标向左移动一个字
Ctrl+向右键 将光标向右移动一个字
Ctrl+向上键 将光标移动到上一行
Ctrl+向下键 将光标移动到下一行
Ctrl+Home 移动到文档的开头
Ctrl+End 移动到文档的结尾
Ctrl+Page Up 向上移动一个页面
Ctrl+Page Down 向下移动一个页面
Ctrl+Delete 删除下一个字
F10 显示快捷键提示
Shift+F10 显示当前快捷菜单
F1 打开“写字板”帮助
10. 计算器的键盘快捷方式
Atl+1 切换到标准模式
Alt+2 切换到科学型模式
Alt+3 切换到程序员模式
Alt+4 切换到统计信息模式
Ctrl+E 打开日期计算
Ctrl+H 将计算历史记录打开或关闭
Ctrl+U 打开单位转换
Alt+C 计算或解决日期计算和工作表
F1 打开“计算器”帮助
Ctrl+Q 按下 M- 按钮
Ctrl+P 按下 M+ 按钮
Ctrl+M 按下 MS 按钮
Ctrl+R 按下 MR 按钮
Ctrl+L 按下 MC 按钮
% 按下 % 按钮
F9 按下 +/– 按钮
/ 按下 / 按钮
* 按下 * 按钮
+ 按下 + 按钮
- 按下 – 按钮
R 按下 1/× 按钮
@ 按下平方根按钮
0-9 按下数字按钮 (0-9)
= 按下 = 按钮
. 按下 .(小数点)按钮
Backspace 按下 Backspace 按钮
Esc 按下 C 按钮
Del 按下 CE 按钮
Ctrl+Shift+D 清除计算历史记录
F2 编辑计算历史记录
向上箭头键 在计算历史记录中向上导航
向下箭头键 在计算历史记录中向下导航
Esc 取消编辑计算历史记录
Enter 编辑后重新计算计算历史记录
F3 在科学型模式下选择“角度”
F4 在科学型模式下选择“弧度”
F5 在科学型模式下选择“梯度”
I 在科学型模式下按 Inv 按钮
D 在科学型模式下按 Mod 按钮
Ctrl+S 在科学型模式下按 sinh 按钮
Ctrl+O 在科学型模式下按 cosh 按钮
Ctrl+T 在科学型模式下按 tanh 按钮
( 在科学型模式下按 ( 按钮
) 在科学型模式下按 ) 按钮
N 在科学型模式下按 ln 按钮
; 在科学型模式下按 Int 按钮
S 在科学型模式下按 sin 按钮
O 在科学型模式下按 cos 按钮
T 在科学型模式下按 tan 按钮
M 在科学型模式下按 dms 按钮
P 在科学型模式下按 pi 按钮
V 在科学型模式下按 F-E 按钮
X 在科学型模式下按 Exp 按钮
Q 在科学型模式下按 x^2 按钮
Y 在科学型模式下按 x^y 按钮
# 在科学型模式下按 x^3 按钮
L 在科学型模式下按 log 按钮
! 在科学型模式下按 n! 按钮
Ctrl+Y 在科学型模式下按 y√x 按钮
Ctrl+B 在科学型模式下按 3√x 按钮
Ctrl+G 在科学型模式下按 10x 按钮
F5 在程序员模式下选择 Hex
F6 在程序员模式下选择 Dec
F7 在程序员模式下选择 Oct
F8 在程序员模式下选择 Bin
F12 在程序员模式下选择 QWord
F2 在程序员模式下选择 Dword
F3 在程序员模式下选择 Word
F4 在程序员模式下选择 Byte
K 在程序员模式下按 RoR 按钮
J 在程序员模式下按 RoL 按钮
% 在程序员模式下按 Mod 按钮
( 在程序员模式下按 ( 按钮
) 在程序员模式下按 ) 按钮
| 在程序员模式下按 Or 按钮
^ 在程序员模式下按 Xor 按钮
~ 在程序员模式下按 Not 按钮
& 在程序员模式下按 And 按钮
A-F 在程序员模式下按 A-F 按钮
空格键 在程序员模式下切换位值
A 在统计信息模式下按 Average 按钮
Ctrl+A 在统计信息模式下按 Average Sq 按钮
S 在统计信息模式下按 Sum 按钮
Ctrl+S 在统计信息模式下按 Sum Sq 按钮
T 在统计信息模式下按 S.D. 按钮
Ctrl+T 在统计信息模式下按 Inv S.D. 按钮
D 在统计信息模式下按 CAD 按钮
11. Windows 日记本键盘快捷方式
Ctrl+N 开始新的便笺
Ctrl+O 打开最近使用的便笺
Ctrl+S 将更改保存到便笺
Ctrl+Shift+V 将便笺移动到特定的文件夹
Ctrl+P 打印便笺
Alt+F4 关闭便笺及其日记本窗口
Ctrl+Z 撤消更改
Ctrl+Y 恢复更改
Ctrl+A 选择页面上的所有项目
Ctrl+X 剪切选择内容
Ctrl+C 将选择内容复制到剪贴板
Ctrl+V 从剪贴板粘贴选择内容
Esc 取消某个选择
Delete 删除某个选择
Ctrl+F 开始基本查找
Ctrl+G 转到页面
F5 刷新查找结果
F5 刷新便笺列表
F6 在便笺列表和便笺之间切换
Ctrl+Shift+C 显示便笺列表中列标题的快捷菜单
F11 以全屏模式查看便笺
F1 打开“日记本”帮助
12. Windows 帮助查看器键盘快捷方式
Alt+C 显示目录
Alt+N 显示“连接设置”菜单
F10 显示“选项”菜单
Alt+向左键 返回先前查看过的主题
Alt+向右键 向前移动到下一个(先前已查看过的)主题
Alt+A 显示客户支持页面
Alt+Home 显示帮助和支持主页
Home 移动到主题的开头
End 移动到主题的末尾
Ctrl+F 搜索当前主题
Ctrl+P 打印主题
F3 将光标移动到搜索框

54月/090

MyEclipse 快捷键

发布在 邵珠庆

(1)Ctrl+M切换窗口的大小
(2)Ctrl+Q跳到最后一次的编辑处
(3)F2当鼠标放在一个标记处出现Tooltip时候按F2则把鼠标移开时Tooltip还会显示即Show Tooltip Description。
F3跳到声明或定义的地方。
F5单步调试进入函数内部。
F6单步调试不进入函数内部,如果装了金山词霸2006则要把“取词开关”的快捷键改成其他的。
F7由函数内部返回到调用处。
F8一直执行到下一个断点。
(4)Ctrl+Pg~对于XML文件是切换代码和图示窗口
(5)Ctrl+Alt+I看Java文件中变量的相关信息
(6)Ctrl+PgUp对于代码窗口是打开“Show List”下拉框,在此下拉框里显示有最近曾打开的文件
(7)Ctrl+/ 在代码窗口中是这种//~注释。
Ctrl+Shift+/ 在代码窗口中是这种/*~*/注释,在JSP文件窗口中是<!--~-->。
(8)Alt+Shift+O(或点击工具栏中的Toggle Mark Occurrences按钮) 当点击某个标记时可使本页面中其他地方的此标记黄色凸显,并且窗口的右边框会出现白色的方块,点击此方块会跳到此标记处。
(9)右击窗口的左边框即加断点的地方选Show Line Numbers可以加行号。
(10)Ctrl+I格式化激活的元素Format Active Elements。
Ctrl+Shift+F格式化文件Format Document。
(11)Ctrl+S保存当前文件。
Ctrl+Shift+S保存所有未保存的文件。
(12)Ctrl+Shift+M(先把光标放在需导入包的类名上) 作用是加Import语句。
Ctrl+Shift+O作用是缺少的Import语句被加入,多余的Import语句被删除。
(13)Ctrl+Space提示键入内容即Content Assist,此时要将输入法中Chinese(Simplified)IME-Ime/Nonlme Toggle的快捷键(用于切换英文和其他文字)改成其他的。
Ctrl+Shift+Space提示信息即Context Information。
(14)双击窗口的左边框可以加断点。
(15)Ctrl+D删除当前行。

 

Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)

Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性

Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)

Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+O 快速显示 OutLine
Ctrl+T 快速显示当前类的继承结构
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)

Ctrl+/(小键盘) 折叠当前类中的所有代码

Ctrl+×(小键盘) 展开当前类中的所有代码

Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)

Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)

Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)

Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)

Ctrl+Shift+F4 关闭所有打开的Editer

Ctrl+Shift+X 把当前选中的文本全部变味小写

Ctrl+Shift+Y 把当前选中的文本全部变为小写

Ctrl+Shift+F 格式化当前代码

Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)

下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)

Alt+Shift+R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)

Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)

Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)

Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)

Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)

Alt+Shift+I 合并变量(可能这样说有点不妥Inline)
Alt+Shift+V 移动函数和变量(不怎么常用)
Alt+Shift+Z 重构的后悔药(Undo)


Eclipse快捷键大全
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)
Ctrl+D: 删除当前行
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)

114月/080

Oracle、MySQL和PostgreSQL的功能比较

发布在 邵珠庆

本文在安全、触发器、视图、物化视图和存储过程方面对OracleMySQL和PostgreSQL进行了比较……
【IT专家网独家】随着现代数据库中可以被使用的功能的蓬勃发展,已经很难将它们从数据库中分离出来。例如在Oracle中有许多高级的数据仓库功能,这些功能你可能永远都不需要。此外,还可能有一些其它的功能例如你不能没有的ACID遵从性事务。我们将介绍主要的功能,例如存储过程、视图、快照、表数据类型、事务等等。我们将对比Postgresql、MySQL和Oracle,看哪些能够满足你的需要。

  存储过程

  有人支持、也有人反对在数据库中保存应用程序代码。在这个问题上我保持基本公正的态度,所以我会试着从双方来讨论。当你开始将应用程序代码放置到数据库中时,你就变得极其不轻便。在你将你的应用转向另一个数据库时,这个代码将会被重写。但是它放置在数据库上意味着它还可以充分利用和紧密连接这个引擎。在某些情况下在数据库中存储代码可以显著的提高速度。比如你在对数据进行了某些策略后需要更新百万行的数据中的绝大部分。

  在一个存储过程中数据是在一步中被读取、操纵和更新的。而如果你在应用程序代码的中间层做相同的操作,那么你需要将数据通过网络传送过去,进行操作和将它发送回来。这不只会减慢这一个任务,其它在竞争和它使用的相同的数据的操作很可能就要等待了,因为这个数据处于传送过程中,而且将被执行操作。此外,存储过程的代码可以提供服务对特定的请求进行封装,这对简化你的整个应用程序来说是非常宝贵的。这三个数据库都支持存储过程和函数。Oracle还支持存储过程的包或集合,还包括各种面向对象的功能,这些功能几乎没有人使用过。一个数据库引擎实际上在存储过程和内嵌在那里的SQL代码之间进行上下文切换。在9i中,Oracle推出了批量绑定,这样你就可以对行的大型集合进行操作,并一次就更新整个集合,而不是在每个循环迭代中进行更新。这个功能甚至还可以非常显著的进一步提高性能。

  视图

  视图是基本的存储查询,正因为如此,它执行起来不是特别复杂。然而在查询中使用视图时,它们必定会使查询更加复杂。所以很明显,使用数据库中的视图之前,要更新子查询。Oracle显然提供视图有段时间了。在MySQL5.0中,也支持视图了。像Oracle一样,MySQL也支持UPDATEABLE视图,不过有些限制。Postgres也支持视图和UPDATEABLE视图。详见复杂SQL那一节。

  物化视图(快照)

  物化视图在Oracle中默认模式下支持的很好。作为回顾,记住一个物化视图(我更喜欢更加形象的术语“快照”,我离题了)是一个定期更新的拷贝或是一个表的子集。想象一个视图使用它的查询填充一个镜像拷贝。直到下一次刷新,这个拷贝是静态的,不随主本的更新而更新。通常会在更新的频率和支持它的处理日志(很像一个索引)的维护间做个权衡。名义上,MySQL和Postgresql不支持物化视图,但是在网上有这个的实现,它可以满足你的需求,如果你采用这个方法,你还需要一些支持。用一个存储过程创建物化视图,而另一个刷新它。大致上是CREATE TABLE my_copy AS SELECT。。。

  语言集成

  今天,基于web 的应用程序编程真的是一个平等的世界。几乎所有流行的web 语言都支持所有的数据库类型。JavaPHP、Perl、Python、C#/.NET 等等。这世界让你随心所欲。

  触发器

  MySQL、Oracle和Postgres都在INSERT、UPDATE和DELETE上支持BEFORE & AFTER事件触发器。我个人偏向于除非绝对必要,不然不使用触发器。它们正在逐渐被遗忘,但有时又会出现给你制造麻烦。不过如果谨慎的使用它们,它们会是很有用的。

  安全

  所有这三个数据库都有它们的漏洞。软件中有地方隐藏着错误真的是很正常的。而且,这三个数据库都有定期发布的更新补丁。不过我个人觉得,开源意味着必定有更多的眼光,而通常是批评的眼光在看待这个代码。而且,在开源世界里,社会压力要大的多。在商业领域,当修复比所知的等待修复的成本更昂贵的时候,供应商可能、并通常会加快速度。

  在数据库中的安全方面,这三个数据库都采用密码登录和在数据库中对各种类型进行加密。Oracle最近提供了一个叫做虚拟专用数据库(virtual private database)的功能,在它里面数据表的某些部分和字段可以被加密,并隐藏起来不被看到。这对于数据库管理员和其他管理员不应该有权限访问的有争议的或敏感数据来说,非常有用。

  总结

  我们这三个数据库平台很显然有很多功能,和用于相同问题的不同解决方法。在安全、触发器、视图、物化视图和存储过程方面,它们提供了许多相同的功能性,尽管在性能和可配置性方面不尽相同。在第二部分我们将讨论在索引方面这些数据库真正开始显著不同的一些地方,不过可能最重要的是在它们的优化引擎方面。

  【IT专家网独家】在我们的数据库比较的上一节中,我们介绍了各种知识例如触发器、视图和存储过程。尽管在Oracle、Postgresql和MySQL数据库中的功能设置肯定是各不相同的,但是这些内容已经可以满足你的大多数日常所需了。在这一节,我们将介绍一些关于平台间在处理复杂SQL和优化选择方面的不同,这些不同更加显著,也更加重要。

  复杂SQL(优化引擎)

  SQL是你与你的数据库交互的基础和最关键的方法,无论你选择哪个。这三个平台也恰恰是从它开始真正分离。Oracle支持非常复杂的查询、几乎不限制表的个数、所有的类型的连接和合并。虽然Oracle有很多功能,但是它真正宝贵的却是它基于成本的优化器,它可以分析SQL、如果可能的话进行重写和简化、基于成本选择索引、决定对表的操作和它之中的所有其它的各种功能。

  阅读MySQL的文档,你会发现对偏向于性能的描述和供应商定义的细节使优化器和性能调整在任何平台上都很复杂。MySQL规定的最大规模是在任何连接或在一个视图中表的最大数目为61个。再一次的,我个人觉得无论如何在任何一个应用中这么多表的一个查询将是难以使用的,所以正如上面提到的,目前更适用的是优化器而不是查询最大表规格,等等。

  8.x版本的Postgresql支持所有SQL92规范,几乎没有任何限制。再一次的,我认为你会看到的一个数据库优于其它的数据库的方面就是在优化方面。复杂的查询会变得凌乱,并且查询计划是你在诊断性能瓶颈时的最好的朋友。

  索引类型

  索引技术对于数据库性能是至关重要的,而Oracle有大量的选项可供选择。有非常多的不同的索引类型,包括标准的二进制树、转换键的、基于功能的、常被错误使用的位图索引,甚至还有索引表。随着附加项技术的发展,数据库管理员有了可用的提供索引的Oracle文本,它允许你搜索CLOB(字符大对象),并且Oracle Spatial提供用于基于位置的数据的索引。

  在MySQL中,我们发现有二进制树、哈希、纯文本和GIS索引(对于基于位置的数据)。还有集群索引,但是如果说我在Oracle方面的经验给我任何指导的话,那么就是大多数应用通常是不相关的。因此,大多数情况下我在Oracle、MySQL或Postgres应用中看到的只有二进制树索引。另外,尽管像在MySQL中基于功能的索引是不可用的,但是他们可以通过创建另一个保存使用这个函数的数据的列来进行模拟,然后添加一个触发器来将安装它。

  Postgresql提供二进制树和哈希,还有R树,和它自己定制的GiST索引类型,GiST索引类型允许使用用户定义的类型和允许创建基于功能的索引。Oracle提供了一个类似的功能性类型,它的基于功能的索引可以用于基于pl/sql的功能而不只是标准的预定义系统功能,例如你本来可能会使用的trunc、UPPER。要小心像这样的索引可能访问起来非常缓慢,你可能在谈论到要录入或移除数据时,甚至不希望听到“慢”这个词。

  它确实实现了,并且优化器选择索引的方式优于Oracle

  审计

  Oracle使你可以对一个表或一个文件进行审计,通过审查索引工具。一旦允许了,你可以审查对某一个表的插入、更新或删除,或者登录,或甚至是某一特定用户的所有访问。它有许多选项,并且设置为可用的是非常简单的。

  Postgresql也有这个功能,并且它看起来和Oracle的一样灵活和可配置的。

  另一方面MySQL看起来没有提供这个功能,但是你当然可以创建你自己的存储过程和触发器来做你想做的,并录入相关的信息到数据表里,这只需要一点额外的工作。

  数据类型

  Oracle、MySQL和Postgresql都支持最大达到4GB的大型的二进制和文本数据。我们所知道并喜欢的所有的数据类型也是非常有用的,例如数字、字符和日期。每一个都在一定程度上提供一些定制数据类型,尽管我很少看到在应用中使用这些。

  现在我要讲的一件事是Postgresql和MySQL已经超过了过去的基础,不用担心它们实现我们经常使用的一个良好的自增长列类型。Oracle的争论是按顺序来做这项工作更加有效,但是是静态的。Oracle也没有SET数据类型,这个数据类型很重要。它也没有只有时间的时间数据类型,这个数据类型Postgresql和MySQL都有。但是你会发现你能在这三个数据库品平台上做所有你想做的关于日期和时间的操作,从对时区的操作到对间隔的处理,等等。

  另外一个我喜欢Postgresql和MySQL的理由是它们支持各种优秀的数学数字类型,从smallint到decimal、real、double,等等。这些利用了基本的架构实现,与编程语言中可用的数据类型相匹配,例如C语言

  对事务的支持

  在数据库领域,适当的事务操作遵守了acronym到ACID,这意味着原子性、一致性、隔离性和持久性。原子性意思是一个事务是一个完整的单元,所有都被提交或所有都被回滚。一致性意思是你从一个*VALID*状态转移到另一个,例如你执行适当的约束来加强业务逻辑。隔离性意思是一个事务不能看到另一个事务在做什么,直到它完成了(提交了)。持久性意思是一旦提交了,这个变更就是永久的,并且是防止你硬盘失败的*至关重要的*。

  关于这个问题我有一些事情要说,希望能够避免争论。我看到像“任何企业级应用绝不会使用一个没有实现完全的ACID遵从性的数据库,而且非事务型的表是完全没有用的”这样的说法已经消失了。这些都是愚蠢的说法。例如,Oracle在它的数据字典中的它本身的性能视图就不是事务型的。其次,它们在那个环境中根本没有必要。有许多应用是这样的。我看过一个航空票务系统,它需要定期升级和添加第二个服务器用于放置Oracle。他们看了这个软件的所有相关的许可成本和大型设备的硬件成本。然后他们回头看这个应用。有些人正确的认识到在航空网站上90%的操作是浏览航班(只读),而仅仅10%才是真正的购买机票。所以,他们建立了一组低成本的MySQL服务器用于浏览航班,而变更旅程请求则提交给大型的Oracle服务器来执行票务操作。多么好的一个结合解决方案!

  是的,MySQL在事务方面的InnoDB表方面已经走了很长一段路。这也许可以解释为什么Oracle购买Innobase。一些人仍然认为MySQL只是一个用于LDAP或NFS的SQL接口。但是,MySQL确实走了很长的路并且将继续挑战反对它的人。

  在这点上Postgresql更完整,所以我会说你能看到的主要是和Oracle的性能方面的不同,这就是它的问题。

  总结

  正如你在我们的数据库平台的多个部分中看到的,选择一个数据库平台时要考虑很多事情。从功能完整性,到供应商支持和共同支持,到性能和优化。在你充分了解你在构建的应用和它真正需要什么之前,不要投资过多。到了最后你可能觉得这些比较模糊,并且难以确定,但是有了一点创造性,仔细思考这个主题,并且拥有一个好的开发环境,你就应该能够得出一个成本高效并强大的解决方案来。