MSSQL,如何使用MySQL数据库

伏羲号

MSSQL,如何使用MySQL数据库?

主从架构— —概念

MSSQL,如何使用MySQL数据库

binlog日志

MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间。

复制原理

1. 主库操作保留binlog日志

2. 从库的IO线程从主库拉取binlog日志,并生成中继日志(relay log)

3. 从库的SQL线程解析中继日志,并在本身回放

状态检查

主要通过判断IO线程和SQL线程是否处于Running判断复制是否正常,判断Seconds_Behind_Master参数代表数据同步是否延迟:

mysql> show slave status\G... Slave_IO_Running: YesSlave_SQL_Running: YesSeconds_Behind_Master: 0...

主从架构— —衍生各种扩展的主从架构

1. 一主多从

2. 双主复制

3. 级联复制

4. 等等

读写分离

大部分场景下,读的频率比写的频率会高很多。所以可以通过扩展多个SLAVE节点提高整体的使用性能。

数据备份

传统的备份包括三种方式:

1. lvm snapshot(LVM快照备份)

2. mysqldump

3. Xtarbackup

那么要如何实现数据的一致性备份呢(一致性备份是所有数据/文件/磁盘 需要在同一个时间点进行备份)

LVM SNAPSHOT

1. 执行FTWRL(FLUSH TABLES WITH READ LOCK)

1.1上全局读锁(lock_global_read_lock)

1.2清理表缓存(close_cached_tables)

1.3上全局COMMIT锁(make_global_read_lock_block_commit)

2. 执行lvcreate 创建lv快照.

3. UNLOCK TABLES解锁

MYSQLDUMP

1. 开启可重复读事务隔离

2. 开启事务

3. 建立数据快照(可以理解为select * from *)

4. 结束事务

XTRABACKUP

1. 不是整体采用备份锁,只有特定阶段。

2. indodb阶段不需要加锁,ACID的C(持续性)是通过Redo log实现,通过线程增量记录redo log实现。

数据库access和MYSQL有什么区别?

Access和MySQL都是我们平时所说的数据库,但二者的区别却是很大的。

最明显的区别就是:Access是桌面型数据库,以文件的格式存储,通过驱动可直接访问文件;而MySQL则是大型关系型数据库,需要MySQL数据库服务后台支撑,存储的格式也不仅仅是一个文件那么简单,访问的则是数据库服务器而不是文件。

当然上面说的主要是最明显的区别,如果要对二者进行对比,那区别大着呢,我们下面就罗列下二者的主要区别。

获取途径不同

正规来说,Access算是Office的一个套件,如果您要用Microsoft Access来管理Access,则需要购买Office,从这个角度看,Access是收费的;当然您也可以通过其它途径管理Access,这种情况下Access又是免费的。与Access对标的开源数据库是SQLite,如果要选择,还是建议您选择SQLite。

MySQL则是开源的数据库系统,您要是用直接从官网下载即可,这个本身是免费的,但一些好用的前端管理工具有可能是收费的,比如Navicat就价格不菲。自从MySQL被Oracle收购之后,MySQL被分出两个分支,一个分支闭源开始收费、一个分支则仍旧开源,从长远看,Oracle肯定会把开源部分收费、或者继续开源但故意疏于维护导致性能与闭源分支拉开距离。

与MySQL对标的开源数据库是MariaDB,这是从MySQL分离出来的一个独立的开源分支,而且承诺永远开源永远免费。所以,从长远看,选用MySQL不如直接使用MariaDB或者另一个功能强大的开源数据库PostgreSQL。不过MariaDB和MySQL基本是兼容的,所以即时有一天流氓公司要完全闭源了,直接转到MariaDB也不是难事儿。

性能区别非常大

Access和MySQL本质上讲,都算是关系型数据库,都是通过行列二维表格的方式存储数据,但二者的性能却是天差地别。

Access毕竟是文件型的桌面数据库,在数据量不大时,速度还是可以接受的,但当访问数据量过大时,速度和效率急剧下降。而且,如果您要分布式访问Access也会比较麻烦,可能您需要采用第三方工具支撑,或者自己开发一个服务端排队访问。当然,如果是做网站用就没有这种问题,只是速度和效率问题了。

MySQL则不同,作为最受欢迎的开源关系型数据库,MySQL的性能是获得一致认可的,当数据量比较大时,仍可保证较快的速度和较高的效率,同时,MySQL对并发访问的处理也比Access的好得多,分布式访问更不是问题。

支持的操作系统不同

Access是微软Office的一个套件,只能支持Windows平台,这对喜欢使用Linux的朋友来说基本是无解的。

MySQL则根植于Linux,后来才移植到Windows,MySQL对Linux的支持是全方位的,在Linux上运行的效率也要优于Windows。当然MySQL支持的不仅仅是Linux和Windows了,各种Unix和MacOS也都是支持的。

支持的SQL区别很大

Access算是一个变种的小型数据库,支持的SQL语法有限,而且很多标准SQL被微软在Access上阉割的不伦不类的。Access主要支持的是表和视图,对我们常用的自定义函数、存储过程等等都是完全不支持的,这对喜欢写自定义函数和存储过程的朋友来说,简直就是梦魇。同时Access支持的数据类型也是有限的。

MySQL则不同,她基本兼容SQL-92标准,很多方面还做了优化,对自定义函数、存储过程的支持也是很棒的,语法格式基本比较正常。MySQL支持的数据类型非常丰富,甚至是区别于其它关系型数据库,这点有点不正常,但搞明白了倒会成为MySQL的一个优点。

当然区别还有很多,二者的应用场景完全不同,基本没有太多可比性。如果您为了简单选用Access,倒不如使用SQLite;如果您为了性能选用MySQL,倒不如使用MariaDB和PostgreSQL。

MySQL和SQL的本质区别是什么?

看似MySQL和SQL很像,其实这两者本质上是有区别的,更不能把这两者都当成数据库来看待。

SQL是数据库管理及查询语言

SQL是结构化查询语言的英文简称,为便于理解,我们可以把SQL直接理解成操作关系型数据库的语言,它是一种特殊的编程语言。

SQL结构化查询语言其实有很多功能,数据库查询只是其中一部分,一般而言SQL语言主要包含以下几个部分:

数据库查询语言:确定数据如何查出

数据库操作语言:主要是Insert、Update、Delete等操作

事务控制语言:主要包含Commit、Rollback等事务类操作

数据定义语言:主要是对表进行的一些操作,如:Create、Alter、Drop等。

另外需要注意的是:SQL只是一种标准,不同的数据库对SQL语句的支持是不同的,比如你在MySQL中能执行某条SQL语句,同样的SQL语句在Oracle中就未必能执行!

MySQL是一种关系型数据库

MySQL它是当下应用最为广泛的开源关系型数据库,它是一款数据库综合软件,主要是用来管理和存储数据库中的数据的,它除了提供基本的数据库功能外,也支持SQL语言。

总结:SQL是一种用来操作数据库的程序语言,不同数据库的SQL语句也存在一些差异;而MySQL是一种数据库,通过SQL语言可以从MySQL中查找数据。

现在很多人把数据库简称为SQL,其实这是错误的!

mysql多久能学会?

My SQL大概一两个星期就能学会了。

首先你要在电脑中安装MySQL程序,然后进行简单的维护操作,并了解一下SQL语言的语法。下一步可能更多的操作是在写程序中嵌入SQL语句。随着你程序开发的进度,你慢慢也会对mysql数据库有更深入的了解。当然要想精通这个数据库的管理也不是那么容易的事情。

mysql和mysqld的区别?

mysqld SQL后台程序(即mysql服务器)。

要想使用客户端程序,该程序必须运行,因为客户端通过连接服务器来访问数据库。mysql 交互式输入SQL语句或从文件以批处理模式执行它们的命令行工具。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,76人围观)

还没有评论,来说两句吧...