mysql和oracle数据库区别

mysql和oracle数据库区别,第1张

在一般用户使用上,基本上没有区别,下面是一些肤浅的区别(前者是ORACLE,后者是MYSQL)。

对于老板来说,区别就是一个要钱,一个免费。

对于系统管理员来说,区别就是一个非常复杂,一个非常简单。

对于用户来说,一个非常稳定,一个在数据量大、访问人多的时候就慢死甚至出错、崩溃。

Inception远不止是一个自动化审核工具,同时还具备执行,生成对影响数据的回滚语句(类似闪回的功能),这样一条龙服务的工具

将会给DBA的工作带来翻天覆地的变化,DBA从此就从繁重的审核、登上去执行,出错了很难回滚(如果提前没有备份的话)的被动局面解放了出来。

有的时候因为掉电或者其他原因导致数据库损坏,我们可以使用mysql自带的mysqlcheck命令来快速修复所有的数据库或者特定的数据库;例如

检查优化并修复所有的数据库用:

#mysqlcheck-A-o-r-p

Enterpassword:

database1OK

database2OK

----------

修复指定的数据库用

#mysqlcheck-A-o-rDatabase_NAME-p

即可

另外如果只是对某个表进行修复可以用:myisamchk或isamchk

其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:

myisamchktablenameMYI

进行检测,如果需要修复的话,可以使用:

myisamchk-oftablenameMYI

关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。

另外可以把下面的命令放在你的rclocal里面启动MySQL服务器前:

[-x/tmp/mysqlsock]&&/pathtochk/myisamchk-of/DATA_DIR//MYI

其中的/tmp/mysqlsock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysqlsock,对于使用源码安装则是/tmp/mysqlsock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。

1,简单的修复模式

myisamchk-r-qpath/数据库/坏表MYI

注:-r----恢复模式-q----快速修复

2,使用安全修复模式

myisamchk--safe-recoverpath/数据库/坏表MYI

3,困难的修复模式

如果在索引文件的第一个16K块被破坏,或包含不正确的信息,或如果索引文件丢失,你只应该到这个阶段。在这种情况下,创建一个新的索引文件是必要的。按如下这样做:

把数据文件移更安全的地方。

使用表描述文件创建新的(空)数据和索引文件:

shell>mysqldb_name

mysql>DeleteFROMtbl_name;

mysql>quit

将老的数据文件拷贝到新创建的数据文件之中。(不要只是将老文件移回新文件之中;你要保留一个副本以防某些东西出错。)

回到阶段2。现在myisamchk-r-q应该工作了。(这不应该是一个无限循环)。

4,非常困难的修复模式

只有描述文件也破坏了,你才应该到达这个阶段。这应该从未发生过,因为在表被创建以后,描述文件就不再改变了。

从一个备份恢复描述文件并且回到阶段3。你也可以恢复索引文件并且回到阶段2。对后者,你应该用myisamchk-r启动。

如果你没有一个备份但是确切地知道表是怎样被创建的,在另一个数据库中创建表的一个拷贝。删除新的数据文件,然后从其他数据库将描述和索引文件移到破坏的数据库中。这给了你新的描述和索引文件,但是让数据文件独自留下来了。回到阶段2并且尝试重建索引文件。

5,优化表结构

myisamchk-r表

也可以使用sql语句来优化OPTIMIZETABLE

本方法参考自mouse博客

1

使用php脚本删除数据库,php使用

mysql_query

函数来创建或者删除

mysql

数据库;

2

使用

mysqladmin

删除数据库;

3

使用

mysqladmin

删除数据库;

使用普通用户登陆mysql服务器,你可能需要特定的权限来创建或者删除

mysql

数据库。所以我们使用root用户登录,root用户拥有最高权限,可以使用

mysql

mysqladmin

命令来创建数据库。

在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失。

4

使用php脚本删除数据库;

php使用

mysql_query

函数来创建或者删除

mysql

数据库。bool

mysql_query(

sql,

connection

);该函数有两个参数,在执行成功时返回

true,否则返回

false。

在MySQL中,两者存在的意义以及性能:

00 – Undo Log

Undo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)。

- 事务的原子性(Atomicity)

事务中的所有 *** 作,要么全部完成,要么不做任何 *** 作,不能只做部分 *** 作。如果在执行的过程中发生了错误,要回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过。

- 原理

Undo Log的原理很简单,为了满足事务的原子性,在 *** 作任何数据之前,首先将数据备份到一个地方(这个存储数据备份的地方称为Undo Log)。然后进行数据的修改。如果出现了错误或者用户执行了ROLLBACK语句,系统可以利用Undo Log中的备份将数据恢复到事务开始之前的状态。除了可以保证事务的原子性,Undo Log也可以用来辅助完成事务的持久化。

- 事务的持久性(Durability)

事务一旦完成,该事务对数据库所做的所有修改都会持久的保存到数据库中。不能因为错误/重启/宕机而丢失已经COMMIT的数据。为了保证持久性,数据库系统需要将修改后的数据完全的记录到持久的存储上。

- 用Undo Log实现原子性和持久化的事务的简化过程

假设有A、B两个数据,值分别为1,2。

A事务开始

B记录A=1到undo log的内存buffer

C在内存中修改A=3

D记录B=2到undo log的内存buffer

E在内存中修改B=4

F将undo log的buffer写到磁盘。

G将内存中修改后的数据写到磁盘。

H事务提交

这里有一个前提条件:‘数据都是先读到内存中,然后修改内存中的数据,最后将数据写回磁盘’。以上过程之所以能同时保证原子性和持久化,是因为以下特点:

A 更新数据前记录Undo log。

B 为了保证持久性,必须将数据在事务提交前写到磁盘。只要事务成功提交,数据必然已经持久化。

C Undo log必须先于数据持久化到磁盘。如果在G,H之间系统崩溃,undo log是完整的,可以用来回滚事务。

D 如果在A-F之间系统崩溃,因为数据没有持久化到磁盘。所以磁盘上的数据还是保持在事务开始前的状态。

缺陷:每个事务提交前将数据和Undo Log写入磁盘,这样会导致大量的磁盘IO,因此性能很低。如果能够将数据缓存一段时间,就能减少IO提高性能。但是这样就会丧失事务的持久性。因此引入了另外一种机制来实现持久化,即Redo Log

01 – Redo Log

- 原理

和Undo Log相反,Redo Log记录的是新数据的备份。在事务提交时,只要将Redo Log持久化即可,不需要将数据持久化。当系统崩溃时,虽然数据没有持久化,但是Redo Log已经持久化。系统可以根据Redo Log的内容,将所有数据恢复到最新的状态。

- Undo + Redo事务的简化过程

假设有A、B两个数据,值分别为1,2

A事务开始

B记录A=1到undo log的内存buffer

C内存中修改A=3

D记录A=3到redo log的内存buffer

E记录B=2到undo log的内存buffer

F内存中修改B=4

G记录B=4到redo log的内存buffer

H将redo log的内存buffer写入磁盘。

I事务提交

- Undo + Redo事务的特点

A 为了保证持久性,必须在事务提交时将Redo Log持久化。

B 数据不需要在事务提交前写入磁盘,而是缓存在内存中。

C Redo Log 保证事务的持久性。

D Undo Log 保证事务的原子性。

E 有一个隐含的特点,数据必须要晚于redo log写入持久存储。这是因为Recovery要依赖redo log 如果redo log丢失了,系统需要保持事务的数据也没有被更新。

- IO性能

Undo + Redo的设计主要考虑的是提升IO性能。虽说通过缓存数据,减少了写数据的IO 但是却引入了新的IO,即写Redo Log的IO。如果Redo Log的IO性能不好,就不能起到提高性能的目的。为了保证Redo Log能够有比较好的IO性能,InnoDB 的 Redo Log的设计有以下几个特点:

A 尽量保持Redo Log存储在一段连续的空间上。以顺序追加的方式记录Redo Log,通过顺序IO来改善性能。因此在系统第一次启动时就会将日志文件的空间完全分配,从而保证Redo Log文件在存储上的空间有更好的连续性。

B 批量写入日志。日志并不是直接写入文件,而是先写入redo log buffer当需要将日志刷新到磁盘时 (如事务提交),才将许多日志一起写入磁盘,这样可以减少IO次数。

C 并发的事务共享Redo Log的存储空间,它们的Redo Log按语句的执行顺序,依次交替的记录在一起,以减少Redo Log的IO次数。例如,Redo Log中的记录内容可能是这样的:

记录1: <trx1, insert …>

记录2: <trx2, update …>

记录3: <trx1, delete …>

记录4: <trx3, update …>

记录5: <trx2, insert …>

D 因为C的原因,当一个事务将Redo Log写入磁盘时,也会将其他未提交的事务的日志写入磁盘。

E Redo Log上只进行顺序追加的 *** 作,当一个事务需要回滚时,它的Redo Log记录也不会从Redo Log中删除掉。InnoDB的做法时将回滚 *** 作也记入Redo Log(具体做法看下一节)

《高性能MySQL(第3版)》(施瓦茨 (Baron Schwartz))电子书网盘下载免费在线阅读

资源链接:

链接:> 提取码:ani8  

书名:高性能MySQL(第3版)

作者:施瓦茨 (Baron Schwartz)

译者:宁海元

豆瓣评分:93

出版社:电子工业出版社

出版年份:2013-5-1

页数:764

内容简介:

《高性能mysql(第3版)》是mysql 领域的经典之作,拥有广泛的影响力。第3 版更新了大量的内容,不但涵盖了最新mysql 55版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16 章和6 个附录,内容涵盖mysql 架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的mysql 和mysql相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。

《高性能mysql(第3版)》不但适合数据库管理员(dba)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。

作者简介:

关于作者

Baron Schwartz 是一位软件工程师,居住在弗吉尼亚州的Charlottesville,网络常用名是Xaprb,这是按照QWERTY 键盘的顺序在Dvorak 键盘上打出来的名字。在不忙于解决有趣的编程挑战时,Baron 会和他的妻子Lynn 以及小狗Carbon 一起享受闲暇的时光。他有一个软件工程方面的博客,地址是>

Peter Zaitsev 曾经是MySQL AB 公司高性能组的经理,目前在运作mysqlperformance

blogcom 网站。他擅长于帮助那些每天有数以百万计访问量的网站的管理员解决问题,这些网站通常需要几百台机器来处理TB 级的数据。他常常为了解决一个问题而不停地升级硬件和软件(比如查询优化)。Peter 还经常在各种会议上演讲。

Vadim Tkachenko 曾经是MySQL AB 公司的性能工程师。作为一名在多线程编程和同步方面的专家,他的主要工作是基准测试、性能剖析,以及找出系统的性能瓶颈。他还在性能监控和调优方面做了一些工作,使得MySQL 在多核机器上有更好的可扩展性。

译者简介

宁海元 有超过十年的数据库管理经验,从最初到SQL Server 2000到Oracle到MySQL,擅长数据库高可用架构,性能优化和故障诊断。2007年加入淘宝,带领淘宝DBA团队支撑了淘宝业务的快速增长,完成了数据库的垂直拆分、水平拆分,迁移到MySQL体系等主要工作。目前专注于无线数据领域。网络常用名NinGoo,个人博客:>

周振兴 毕业于北京师范大学数学系,09年加入淘宝数据库团队负责MySQL运维管理工作,有丰富的MySQL性能优化、Troubleshooting经验,对MySQL主要模块的实现和原理有深入的研究,经历淘宝MySQL实例从30到3000的发展,对系统架构、高可用环境规划都有深入理解。个人博客:>

彭立勋 2010年大学毕业后加入阿里巴巴运维部。作为一名MySQL DBA,在运维MySQL的过程中,对MySQL和InnoDB的一些功能和缺陷就进行了补充,编写了多主复制和数据闪回等补丁。目前在阿里集团核心系统研发部数据库组,专注于MySQL数据库相关的开发工作。后来一些补丁被MySQL之父Mony看中,成为MariaDB提交组(Maria-captains)成员,并且把多主复制,线程内存监控等补丁合并到了MariaDB 100版本。

翟卫祥 毕业于武汉大学,研究生阶段从事数据库相关研究。毕业后就职于阿里巴巴集团数据库技术团队至今,主要负责阿里内部MySQL代码分支维护,包括MySQL Bug Fix及新特性开发。对MySQL内核有一定的研究。

刘辉 2008年毕业于西安电子科技大学计算机系,硕士学位。2011年加入阿里巴巴集团数据库技术团队,花名希羽,MySQL内核开发工程师。

以上就是关于mysql和oracle数据库区别全部的内容,包括:mysql和oracle数据库区别、去哪儿网使用的MySQL自动化运维工具Inception介绍、数据库损坏了怎么办等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9489616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存