本文翻译自官方mysql 5.7使用手册,参考原文地址:https://dev.mysql.com/doc/refman/5.7/en/features.html
一、内部结构与可移植性
1. 使用C和C++编写
2. 使用多种不同的编译器测试
3. 可在多个不同的平台中运行,可参考:https://www.mysql.com/support/supportedplatforms/database.html
4. 在 5.5之后的版本中,可以更方便的使用 CMake编译,5.5之前的版本使用 GNU Automake、Autoconf、和 Libtool
5. 使用Purify 、Valgrind测试(这两款都是内存泄漏测试工具)
6. 独立的模块采用多层服务设计
7.充分利用内核线程的多线程设计,更简单的使用多核CPU
8. 提供事务与非事务的存储引擎
9. 索引压缩使用 B-tree
10.能够想对简单的新增第三方存储引擎,这个更方便为内部的数据库提供SQL接口
11.基于非常快速的线程内存分配
12.快速执行循环嵌套
13.使用高度优化的类库,实现尽可能块的SQL函数。
14.在C/S的环境中,以独立的项目提供服务,这种应用可以在隔离或没有网络可用的环境中使用。
二、数据类型
1. 多种数据类型:有符号/无符号 1、2、3、4、8位整形,FLOAT, DOUBLE, CHAR, VARCHAR, BINARY, VARBINARY, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET, ENUM,地理位置信息
2. 固定长度和可变长度的字符串类型
三、语法与函数
1. 在 select 和 where 中支持运算和函数。例如:
mysql> SELECT CONCAT(first_name, ' ', last_name)
-> FROM citizen
-> WHERE income/dependents > 10000 AND age > 30;
2. 支持Group by 和 Order by 子句中使用组函数:COUNT(), AVG(), STD(), SUM(), MAX(), MIN(), and GROUP_CONCAT()
3. 支持 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 以及标准的SQL和ODBC的语法
4. 支持表(table)和列(column)的别名
5. 支持DELETE, INSERT, REPLACE, UPDATE的操作返回操作的行数.
6. 支持MYSQL的特定show语法,可检索数据库、存储引擎、表、索引信息。使用标准的SQL实现 INFORMATION_SCHEMA 表的数据。
7. EXPLAIN优化检索分析
8. 可以关联不同数据库之间的表
四、安全
1. 使用host-based verification实现的,灵活、安全的权限密码系统。
2. 密码在连接服务器时加密
五、扩展性与限制
1. 目前使用的数据库包含了 5000万条记录,在我们知道的使用者当中,MYSQL的服务包含20万个表,及50亿条记录。
2. 每个表支持64个索引,每个索引支持1-16个列,在InnoDB中,最大支持767或3072个字节。MyISAM中支持1000个字节。索引可以使用前缀的列CHAR,VARCHAR,BLOB,或文本列类型
六、连接
1. Unix系统中支持TCP/IP协议以及socket,window系统支持tcp/ip、命名管道、共享内存
2. 客户端支持多种语言
3. 提供C, C++, Eiffel, Java, Perl, PHP, Python, Ruby 等版本的API
4. 支持ODBC和JDBC、ADO.NET
七、本地化
1. 提供多种语言的错误消息
2. 提供多种字符集
3. 根据选择的字符集保存数据
4. 按照默认的字符排序和比较
八、客户端与工具
1. 可执行程序:mysqldump 和 mysqladmin,可视化工具:MySQL Workbench
2. mysqlcheck
3. 使用–help or -? 选项,查看更多内容