数据库架构对比

来源:互联网 发布:恩典壁纸软件 编辑:程序博客网 时间:2024/06/05 15:30

http://blog.csdn.net/ggxxkkll/article/details/18569647   MySQL 体系架构 Oracle体系架构 PostgreSQL体系架构




Oracle:

http://www.cnblogs.com/jonescheng/archive/2008/05/08/1189063.html   关于redo log 和 undo log 这两个概念





MySQL:

 



innodb_buffer_pool_size = 128G
innodb_additional_mem_pool_size = 16M        --  设置了InnoDB存储引擎用来存放数据字典信息以及一些内部数据结构的内存空间大小
innodb_log_buffer_size = 1G

http://blog.csdn.net/yang1982_0907/article/details/20123171


log_bin

large_pages


keep_                 --myisam内存
basedir=
datadir=


myisam不支持事务,表锁、全文索引,面向OLAP应用。存储引擎只缓存索引文件,数据文件的缓存由操作系统本身来完成。
innodb支持事务、行锁、外键,面向OLTP应用。提供插入缓冲(insert buffer),UNDO,二次写(double write),自适合哈希索引(ahi),预读(read ahead)。
BDB支持事务、页锁。
PERFORMANCE_SCHEMA

http://blog.csdn.net/isoleo/article/details/51239930

https://www.cnblogs.com/wyy123/p/6092976.html

http://www.jb51.net/article/48082.htm


http://blog.itpub.net/7220098/viewspace-1136064/     MySQL文件目录格式

MySQL文件包括MySQL所建数据库文件和MySQL所用引擎创建的数据库文件。
.frm 文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等,文件与操作系统和数据库引擎无关,都有这么个与表名同名文件。
MyISAM引擎的文件:
.MYD 即 my data,表数据文件
.MYI 即my index,索引文件
.log 日志文件。
InnoDB引擎的文件:
采用表空间(tablespace)来管理数据,存储表数据和索引,
InnoDB数据库文件(即InnoDB文件集,ib-file set):
ibdata1、ibdata2等:系统表空间文件,存储InnoDB系统信息和用户数据库表数据和索引,所有表共用。
.ibd文件:单表表空间文件,每个表使用一个表空间文件(file per table),存放用户数据库表数据和索引。
日志文件: ib_logfile1、ib_logfile2



http://www.linuxidc.com/Linux/2014-09/107095.htm   MySQL Binlog介绍
ib_logfile与log-bin区别:

ib_logfile0:是redo log,记录的是文件的物理更改。是Innodb多版本缓冲的一个保证。记录的是redo log和undo log的信息,这里记录的基本是commit之前的数据。 也就是在你修改数据之前,会先把修改的操作作为日志先记录下来。
 
mysql-bin.000011:是数据库更新日志,记录的是逻辑更改。系统的所有更新记录。记录的是已经执行完毕的对数据库的dml和ddl信息,这里记录的基本是commit之后的数据信息。 
mysql-bin.000011是二进制日志,格式是二进制的,但是这个日志更加有用,比如 在我们做数据库的主从复制时,这个二进制日志就是关键,mysql会把日志发送到slave,salve会接收日志,然后解析日志,把里面的sql语句重新应用到数据库里,于是就能同步数据了。作用类似于Oracle的归档日志,可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、Mysql的复制(主主数据库的复制、主从数据库的复制)。


http://blog.csdn.net/hangkk2008/article/details/42933369     mysql的innodb中事务日志ib_logfile

http://dinglin.iteye.com/blog/907123   ib_logfile、bin-log与主从同步

redo日志写入方式:
1.ib_logfile写入当前事务更新数据,并标上事务准备trx_prepare
2.写入bin-log
3.ib_logfile当前事务提交提交trx_commit
恢复方式:
如果ib_logfile已经写入事务准备,那么在恢复过程中,会依据bin-log中该事务是否存在恢复数据。
假设:
1)结束后异常,因没有写入bin-log,从库不会同步这个事务,主库上,重启时,在恢复日志中这个
事务没有commit,即rollback这个事务.
2)结束后异常,这会bin-log已经写入,从库会同步这个事务。主库依据恢复日志和bin-log,也正常恢复此事务
综上描述:bin-log写入完成,主从会正常完成事务;bin-log没有写入,主从库rollback事务;不会出现主从库不一致问题.


innodb_flush_log_at_trx_commit:控制事务日志何时写盘和刷盘,安全递增:0,2,1
0:每秒一次事务缓存区刷新到文件系统,同时文件系统到磁盘同步,但是事务提交时,不会触发log_buffer到文件系统同步;
2:每次事务提交时,会把事务缓存区日志刷新到文件系统中去,且每秒文件系统到磁盘同步;
1:每次事务提交时刷新到磁盘,最安全;
适用环境:
0:磁盘IO能力有限,安全方便较差,无复制或复制延迟可以接受,如日志性业务,mysql损坏丢失1s事务数据;
2:数据安全性有要求,可以丢失一点事务日志,复制延迟也可以接受,OS损坏时才可能丢失数据;
1:数据安全性要求非常高,且磁盘IO能力足够支持业务,如充值消费,敏感业务;





PostgreSQL:

https://yq.aliyun.com/groups/29  PG云栖社区

http://blog.csdn.net/jameshadoop/article/details/60962451    Postgres 数据表文件存储位置

http://blog.csdn.net/lk_db/article/details/77986449  Postgres中FSM及VM文件说明

http://blog.csdn.net/beiigang/article/details/7680893   PostgreSQL的存储系统一:控制文件存储结构

https://www.cnblogs.com/zhaowenzhong/p/5667434.html     Postgresql 配置文件详解 

http://www.postgres.cn/news/viewone/1/220   数据库系统概念笔记之存储和文件系统及PostgreSQL实现

 



原创粉丝点击