MySQL
名字的来历
与其他的大型数据库例如 Oracle 、 DB2 、 SQL Server 等相比, MySQL 自有它的不足之处,如规模小、功能有限( MySQL 不支持视图(已经被列入 5.1 版的开发计划)、事件等)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说, MySQL 提供的功能已经绰绰有余,而且由于 MySQL 是开放源码软件,因此可以大大降低总体拥有成本。
目前 Internet 上流行的网站构架方式是 LAMP ( Linux Apache MySQL PHP ),即使用 Linux 作为操作系统, Apache 作为 Web 服务器, MySQL 作为数据库, PHP 作为服务器端脚本解释器。由于这四个软件都是遵循 GPL 的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。
可以使用命令行工具管理 MySQL 数据库(命令 mysql 和 mysqladmin) ,也可以从 MySQL 的网站下载图形管理工具 MySQL Administrator 和 MySQL Query Browser 。
phpMyAdmin 是由 php 写成的 MySQL 资料库系统管理程式,让管理者可用 Web 介面管理 MySQL 资料库。
phpMyBackupPro 也是由 PHP 写成的,可以透过 Web 介面创建和管理数据库。它可以创建伪 cronjobs ,可以用来自动在某个时间或周期备份 MySQL 数据库。
MyISAM Mysql 的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事务
InnoDB 事务型数据库的首选引擎,支持 ACID 事务,支持行级锁定
BDB 源自 Berkeley DB ,事务型数据库的另一种选择,支持 COMMIT 和 ROLLBACK 等其他事务特性
Memory 所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在 Mysql 重新启动时丢失
Merge 将一定数量的 MyISAM 表联合而成一个整体,在超大规模数据存储时很有用
Archive 非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。 Archive 拥有高效的插入速度,但其对查询的支持相对较差
Federated 将不同的 Mysql 服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用
Cluster/NDB 高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用
CSV 逻辑上由逗号分割数据的存储引擎
BlackHole 黑洞引擎,写入的任何数据都会消失
另外, Mysql 的存储引擎接口定义良好。有兴趣的开发者通过阅读文档编写自己的存储引擎。
MySQL
最初的开发者的意图是用
mSQL
和他们自己的快速低级例程
(ISAM)
去连接表格。不管怎样,在经过一些测试后,开发者得出结论:
mSQL
并没有他们需要的那么快和灵活。这导致了一个使用几乎和
mSQL
一样的
API
接口的用于他们的数据库的新的
SQL
接口的产生,这样,这个
API
被设计成允许为用于
mSQL
而写的第三方代码更容易移植到
MySQL
。
MySQL 这个名字是怎么来的已经不清楚了。基本指南和大量的库和工具带有前缀 “my” 已经有 10 年以上,而且不管怎样, MySQL AB 创始人之一的 Monty Widenius 的女儿也叫 My 。这两个到底是哪一个给出了 MySQL 这个名字至今依然是个密,包括开发者在内也不知道。
MySQL 的海豚标志的名字叫 “sakila” ,它是由 MySQL AB 的创始人从用户在 “ 海豚命名 ” 的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者 Ambrose Twebaze 提供。根据 Ambrose 所说, Sakila 来自一种叫 SiSwati 的斯威士兰方言,也是在 Ambrose 的家乡乌干达附近的坦桑尼亚的 Arusha 的一个小镇的名字。
MySQL 这个名字是怎么来的已经不清楚了。基本指南和大量的库和工具带有前缀 “my” 已经有 10 年以上,而且不管怎样, MySQL AB 创始人之一的 Monty Widenius 的女儿也叫 My 。这两个到底是哪一个给出了 MySQL 这个名字至今依然是个密,包括开发者在内也不知道。
MySQL 的海豚标志的名字叫 “sakila” ,它是由 MySQL AB 的创始人从用户在 “ 海豚命名 ” 的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者 Ambrose Twebaze 提供。根据 Ambrose 所说, Sakila 来自一种叫 SiSwati 的斯威士兰方言,也是在 Ambrose 的家乡乌干达附近的坦桑尼亚的 Arusha 的一个小镇的名字。
MySQL
的概述
MySQL
是一个小型关系型数据库管理系统,开发者为瑞典
MySQL AB
公司。目前
MySQL
被广泛地应用在
Internet
上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了
MySQL
作为网站数据库。
MySQL
的特性
1.
使用
C
和
C
编写,并使用了多种
编译器
进行测试,保证源代码的可移植性
2. 支持 AIX 、 FreeBSD 、 HP-UX 、 Linux 、 Mac OS 、 Novell Netware 、 OpenBSD 、 OS/2 Wrap 、 Solaris 、 Windows 等多种操作系统
3. 为多种编程语言提供了 API 。这些编程语言包括 C 、 C 、 Eiffel 、 Java 、 Perl 、 PHP 、 Python 、 Ruby 和 Tcl 等。
4. 支持 多线程 ,充分利用 CPU 资源
5. 优化的 SQL 查询算法,有效地提高查询速度
6. 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的 编码 如中文的 GB 2312 、 BIG5 ,日文的 Shift_JIS 等都可以用作数据表名和数据列名
7. 提供 TCP/IP 、 ODBC 和 JDBC 等多种数据库连接途径
8. 提供用于管理、检查、优化数据库操作的管理工具
9. 可以处理拥有上千万条记录的大型数据库
2. 支持 AIX 、 FreeBSD 、 HP-UX 、 Linux 、 Mac OS 、 Novell Netware 、 OpenBSD 、 OS/2 Wrap 、 Solaris 、 Windows 等多种操作系统
3. 为多种编程语言提供了 API 。这些编程语言包括 C 、 C 、 Eiffel 、 Java 、 Perl 、 PHP 、 Python 、 Ruby 和 Tcl 等。
4. 支持 多线程 ,充分利用 CPU 资源
5. 优化的 SQL 查询算法,有效地提高查询速度
6. 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的 编码 如中文的 GB 2312 、 BIG5 ,日文的 Shift_JIS 等都可以用作数据表名和数据列名
7. 提供 TCP/IP 、 ODBC 和 JDBC 等多种数据库连接途径
8. 提供用于管理、检查、优化数据库操作的管理工具
9. 可以处理拥有上千万条记录的大型数据库
MySQL
的应用
与其他的大型数据库例如 Oracle 、 DB2 、 SQL Server 等相比, MySQL 自有它的不足之处,如规模小、功能有限( MySQL 不支持视图(已经被列入 5.1 版的开发计划)、事件等)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说, MySQL 提供的功能已经绰绰有余,而且由于 MySQL 是开放源码软件,因此可以大大降低总体拥有成本。
目前 Internet 上流行的网站构架方式是 LAMP ( Linux Apache MySQL PHP ),即使用 Linux 作为操作系统, Apache 作为 Web 服务器, MySQL 作为数据库, PHP 作为服务器端脚本解释器。由于这四个软件都是遵循 GPL 的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。
MySQL
管理
可以使用命令行工具管理 MySQL 数据库(命令 mysql 和 mysqladmin) ,也可以从 MySQL 的网站下载图形管理工具 MySQL Administrator 和 MySQL Query Browser 。
phpMyAdmin 是由 php 写成的 MySQL 资料库系统管理程式,让管理者可用 Web 介面管理 MySQL 资料库。
phpMyBackupPro 也是由 PHP 写成的,可以透过 Web 介面创建和管理数据库。它可以创建伪 cronjobs ,可以用来自动在某个时间或周期备份 MySQL 数据库。
Mysql
存储引擎
MyISAM Mysql 的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事务
InnoDB 事务型数据库的首选引擎,支持 ACID 事务,支持行级锁定
BDB 源自 Berkeley DB ,事务型数据库的另一种选择,支持 COMMIT 和 ROLLBACK 等其他事务特性
Memory 所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在 Mysql 重新启动时丢失
Merge 将一定数量的 MyISAM 表联合而成一个整体,在超大规模数据存储时很有用
Archive 非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。 Archive 拥有高效的插入速度,但其对查询的支持相对较差
Federated 将不同的 Mysql 服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用
Cluster/NDB 高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用
CSV 逻辑上由逗号分割数据的存储引擎
BlackHole 黑洞引擎,写入的任何数据都会消失
另外, Mysql 的存储引擎接口定义良好。有兴趣的开发者通过阅读文档编写自己的存储引擎。
Mysql
最常见的应用架构
单点
(Single)
,适合小规模应用
复制 (Replication) ,适合中小规模应用
集群 (Cluster) ,适合大规模应用
Mysql6.0 的 alpha 版于 2007 年初发布,新版增加了对 falcon 存储引擎的支持。 Falcon 是 Mysql 社区自主开发的引擎,支持 ACID 特性事务,支持行锁,拥有高性能的并发性。 Mysql AB 公司想用 Falcon 替代已经非常流行的 InnoDB 引擎,因为拥有后者技术的 InnoBase 已经被竞争对手 Oracle 所收购。
2008 年 1 月 16 日, Sun Microsystems 宣布收购 MySQL AB ,出价约 10 亿美元现金外加期权。
复制 (Replication) ,适合中小规模应用
集群 (Cluster) ,适合大规模应用
Mysql6.0 的 alpha 版于 2007 年初发布,新版增加了对 falcon 存储引擎的支持。 Falcon 是 Mysql 社区自主开发的引擎,支持 ACID 特性事务,支持行锁,拥有高性能的并发性。 Mysql AB 公司想用 Falcon 替代已经非常流行的 InnoDB 引擎,因为拥有后者技术的 InnoBase 已经被竞争对手 Oracle 所收购。
2008 年 1 月 16 日, Sun Microsystems 宣布收购 MySQL AB ,出价约 10 亿美元现金外加期权。