Mysql 有啥优点?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql 有啥优点?相关的知识,希望对你有一定的参考价值。

mysql的优点:

1. 它使用的核心线程是完全多线程,支持多处理器。

2. 有多种列类型:1、2、3、4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM类型。

3. 它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞。

4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自不同数据库的表。

5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。

6. 所有列都有缺省值。你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值。

7. MySQL可以工作在不同的平台上。支持C、C++、Java、Perl、php、Python和TCL API。

(2) MySQL的缺点:

1、 MySQL最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用mysqladmin来重读用户权限时才发生改变。

2、 MySQL的另一个主要的缺陷之一是缺乏标准的RI(Referential Integrity-RI)机制;Rl限制的缺乏(在给定字段域上的一种固定的范围限制)可以通过大量的数据类型来补偿。

3、 MySQL没有一种存储过程(Stored Procedure)语言,这是对习惯于企业级数据库的程序员的最大限制。

4、 MySQL不支持热备份。

5、 MySQL的价格随平台和安装方式变化。Linux的MySQL如果由用户自己或系统管理员而不是第三方安装则是免费的,第三方案则必须付许可费。Unix或Linux 自行安装 免费 、Unix或Linux 第三方安装 200美元,
参考技术A MySQL∶网站开发者的新选择

「变动」这两个字对IT业界来说是再普通不过的事了。如果今天管理阶层的主管们跟你要数据库的推荐名单,很可能在你开始执行你所推荐的方案之前,你的推荐名单上的项目就已经过时了。如此一来,你可能就要重新考虑各种软硬件方案,好让你∶

·帮你将事情完成
·买来以便帮助别人完成他们的工作
·开发以便帮助别人更好地完成他们的工作

不论你的消息有多新,在你的建议通过层层关卡,并且拿到购买资金之前,你的推荐表上的某些项目通常都会过时。幸运的是,没有人会责怪你,或者是对你反唇相讥--这是这一行里很自然的事情。数据库技术通常在你能够掌握它之前就变了。

为了适应日新月异的数据库技术,有相当多的软件工程师逐渐地从桌面数据库软件诸如MicrosoftAccess以及SQLServer,转到使用MySQL。虽然严格说来MySQL并非SQLServer的对手,但许多服务提供商都支持MySQL,并视之为便宜而有效率的替代品。

MYSQL其它的优点

·优化
对于MySQL的优化,我们可以说,主要的问题在于你的硬件条件,而非MySQL本身。不过对于Access,(以及其他桌面数据库软件)事情就不是这样了。没错,MicrosoftJetDatabase的确实有效率,不过它还不是最快的。如果你的数据库设计得非常差,你的网站还是会受到影响而速度变慢的。数据库结构设计也会影响到MySQL,例如,MySQL并不支持外键(foreignkey)。这个缺点会影响到你的数据库设计以及网站的效率。对于使用MySQL做数据库的网站,你应该注意的是,如何让硬盘存取IO减少到最低值、如何让一个或多个CPU随时保持在高速作业的状态、以及适当的网络带宽,而非实际上的数据库设计以及资料查询语句。事实上,有些网站开发者将MySQL称为目前市面上跑得最快的数据库。不过,当你的数据库有很多表格需要同时在一个事务过程(transaction)内完成更新的时候,MySQL的确跑得不怎么样。

·备份
如果你曾经有过抢救一个损坏的MDB档案的惨痛经验,那么你会对MySQL表示非常激赏。这是MySQL另一个胜过Access的地方。首先,mysqldump会产生一个比Access好很多而且也更可靠的备份档案。相比之下,在Access中你只是将一个MDB档拷贝起来做备份。其次,即使MySQL的备份有部分损坏,复原起来也要比一个损坏的MDB档要容易得多了。

·可延伸性(Scalability)以及资料处理能力
套句登山者的话来说,将Access数据库来跟MySQL相比,简直就是像把印第安那的小山丘拿来跟科罗拉多洛矶山脉的Pike'sPeak顶相比较。事实就是这么简单∶MySQL可以处理的档案比Access所能处理的档案大很多。如果你硬将Access数据库弄到100MB的MDB档案时,你要准备好一个字典厚的纪录本来记录来自客户对于网站效率低下的抱怨。而类似的数据库在MySQL上面跑,就不会发生承载过重的迹象。

另外,MySQL同时提供高度多样性,能够提供很多不同的使用者介面,包括命令行客户端操作,网页浏览器,以及各式各样的程序语言介面,例如C+,Perl,Java,PHP,以及Python。你可以使用事先包装好的客户端,或者干脆自己写一个合适的应用程序。MySQL可用于Unix,Windows,以及OS/2等平台,因此它可以用在个人电脑或者是服务器上。

更详细内容:http://www.chinaunix.net/jh/17/15699.html

Binary Log 在 MYSQL 数据流中的可用性:有啥缺点和优点?

【中文标题】Binary Log 在 MYSQL 数据流中的可用性:有啥缺点和优点?【英文标题】:Usability of Binary Log in data streaming in MYSQL: What are the drawbacks and advantages?Binary Log 在 MYSQL 数据流中的可用性:有什么缺点和优点? 【发布时间】:2021-04-13 03:57:56 【问题描述】:

我一直在尝试使用 Kafka 连接从 MySQL 中读取数据,使用 MySQL 源连接器用于数据库和 debezium 连接器用于 bin 日志。我试图了解什么是提取更改数据的更好方法。 Bin 日志有写入日志等的开销,而从数据库读取有查询数据库的开销。与这两种方法相关的其他主要优点和缺点是什么?捕获变更数据的更好方法是什么?同样从 MySQL 8 开始,bin 日志默认启用。这是否意味着它可能是一种更好的做事方式?

【问题讨论】:

【参考方案1】:

这个问题可以总结如下:

基于日志的 CDC(由 Debezium Connector 表示)与 基于轮询的 CDC(由 JDBC Source Connector 表示)的优缺点是什么?

基于查询的 CDC:

✓ 通常更容易设置 ✓ 需要更少的权限 ✗ 轮询数据库的影响 ✗ 需要源架构中的特定列来跟踪更改 ✗ 无法跟踪删除 ✗ 无法在轮询间隔之间跟踪多个事件

基于日志的 CDC:

✓ 捕获所有数据更改 ✓ 事件延迟低,同时避免增加 CPU 负载 ✓ 对数据模型没有影响 ✓ 可以捕获删除 ✓ 可以捕获旧记录状态和更多元数据 ✗ 更多设置步骤 ✗ 需要更高的系统权限 ✗ 对于某些专有数据库来说可能很昂贵

参考

    Five Advantages of Log-Based Change Data Capture 来自 Gunnar 莫林 No More Silos: How to Integrate Your Databases with Apache Kafka and CDC 罗宾·莫法特 堆栈溢出:Kafka Connect JDBC vs Debezium CDC

【讨论】:

你能给出一些专有数据库的名称吗?我也开始了解到默认情况下启用了 MySQL 8 日志箱。这是否意味着日志箱至少在某些方面变得不那么重了? 对于基于查询的 CDC,当您说无法在轮询间隔之间跟踪多个事件时,您是什么意思?【参考方案2】:

@Iskuskov Alexander 给出的列表很棒。我再补充几点:

基于日志的 CDC 还需要写入日志(您在问题中提到了这一点)。这不仅会增加性能开销,还会增加存储空间。

基于日志的 CDC 需要连续的日志流。如果 CDC 遗漏了一个日志,那么副本就无法保持同步,整个副本必须由数据库的新快照初始化的新副本替换。

如果您的 CDC 定期离线,这意味着您需要保留日志直到 CDC 运行,而这很难预测会持续多长时间。这导致需要更多的存储空间。

也就是说,基于查询的 CDC 有其自身的缺点。在我的公司,我们使用了基于查询的 CDC,但我们发现它不方便,我们正在努力将其替换为基于 Debezium 日志的解决方案。由于其他答案中的许多原因,还有:

基于查询的 CDC 难以使架构更改与副本保持同步,因此如果源数据库中发生架构更改,可能需要将副本删除并替换为新快照。

副本经常处于“重建”状态数小时,此时它需要从快照重新初始化,而用户不喜欢这种停机时间。快照传输也增加了网络带宽需求。

没有一个解决方案比另一个“更好”。两者都有优点和缺点。作为工程师,您的工作是选择最适合您项目要求的选项。换句话说,选择对您的需求不利的最不坏的那个。

我们无法为您做出这样的选择,因为您比我们更了解您的项目。


你的cmets:

启用二进制日志不会产生读取查询的开销,但会产生大量写入查询的开销。根据 Percona 首席技术官 Vadim Tkachenko 的测量,MySQL 8.0 的开销变得更大,并在此报告:https://www.percona.com/blog/2018/05/04/how-binary-logs-affect-mysql-8-0-performance/

他得出结论,二进制日志的开销在 MySQL 5.7 中约为 13%,在 MySQL 8.0 中高达 30%。

您能否解释一下“副本经常处于“重建”状态数小时,此时需要从快照重新初始化”?你的意思是建立一个复制数据库?

是的,如果您需要构建新副本,您需要获取源数据库的快照并将其导入到副本中。每一步都需要时间:

    创建源快照 将快照传输到副本所在的主机 将快照导入副本实例

多长时间取决于数据库的大小,但可以是几小时甚至。在等待这个的时候,用户不能使用副本数据库,至少如果他们希望他们的查询分析源数据的完整副本的话。他们必须等待导入完成。

【讨论】:

感谢比尔的精彩解释。如果你曾经经历过,我只想知道还有什么事情。 Bin Logs 对数据库的吞吐量和延迟的影响程度如何。它会减慢整个数据库的速度吗?存储是一个方面,但性能是我担心的问题。 您能否解释一下“副本经常处于“重建”状态数小时,需要从快照重新初始化”?你的意思是建立一个复制数据库?

以上是关于Mysql 有啥优点?的主要内容,如果未能解决你的问题,请参考以下文章

Binary Log 在 MYSQL 数据流中的可用性:有啥缺点和优点?

存储过程跟SQL语句比较,各有啥优点和缺点?

在Oracle中,索引有啥优点和缺点?

采用SOAP的方法访问web derive有啥优点? 关于XML的

DIV+CSS有啥优点?

使用服务而不是组件有啥优点和缺点?