基本概念
MySQL是使用C和C++编写的。核心线程采用多线程,如果有多个CPU,它能方便地使用这些CPU。
MySQL是最流行的开放源码SQL数据库管理系统之一,它是由MySQL AB公司开发、发布并支持的。MySQL AB最初是由David Axmark、Allan Larsson和Michael“Monty”Widenius在瑞典创办的。
MySQL是不区分大小写的,但是如果操作系统的文件名区分大小写(如大多数Unix系统),当MySQL服务器运行在这类操作系统上时,数据库名和表名也区分大小写。
MySQL服务器最初是为小型计算机系统上中等规模的数据库设计的(100万-1亿行,或每个表的大小为100MB)。目前,MySQL服务器能处理TB级别的数据库,也能在针对便携式设备或嵌入式设备的精简版本中使用。
处理大型数据库: 我们使用了MySQL服务器和含5千万条记录的数据库。我们还听说,有些用户将MySQL用于含60000个表和约50亿行的数据库。
每个表可支持高达64条索引(在MySQL 4.1.2之前为32条)。每条索引可由1~16个列或列元素组成。最大索引宽度为1000字节(在MySQL 4.1.2之前为500)。索引可使用具备CHAR、VARCHAR、BLOB或TEXT列类型的列前缀。
MySQL表最大能达到多少
MySQL 3.22限制的表大小为4GB。由于在MySQL 3.23中使用了MyISAM存储引擎,最大表尺寸增加到了65536TB(2567–1字节)。由于允许的表尺寸更大,MySQL数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由MySQL内部限制决定的。
操作系统文件 |
单个文件大小限制 |
Linux 2.2-Intel 32-bit |
2GB (LFS: 4GB) |
Linux 2.4+ |
(using ext3 filesystem) 4TB |
Solaris 9/10 |
16TB |
NetWare w/NSS filesystem |
8TB |
win32 w/ FAT/FAT32 |
2GB/4GB |
win32 w/ NTFS |
2TB(可能更大) |
MacOS X w/ HFS+ |
2TB |
InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建。这样,表的大小就能超过单独文件的最大容量。表空间可包括原始磁盘分区,从而使得很大的表成为可能。表空间的最大容量为64TB。
Windows用户请注意: FAT和VFAT (FAT32)不适合MySQL的使用。应使用NTFS。
存储引擎
非事务安全表自身有几个优点,因为没有事务开支,所有优点都能出现:
· 更快
· 需要更少的磁盘空间
· 执行更新需要更少的内存
事务性表有自己的优点和不足之处。很多用户和应用程序开发人员喜欢这类简单性。但是,即使你是原子操作范型的新手,或更熟悉事务,也请考虑非事务性表的速度益处,与经过优化调整的最快的事务性表相比,它的速度快3~5倍。
以Windows服务方式启动MySQL
在NT家族 (Windows NT,2000,XP,2003)中,建议将MySQL安装为Windows服务,当Windows启动、停止时,MySQL也自动启动、停止。还可以从命令行使用NET命令,或使用图形Services工具来控制MySQL服务器。
安装MySQL Windows服务之前,应当使用下面的命令先停止当前正运行的服务器:
C:> C:Program FilesMySQLMySQL Server 5.1inmysqladmin -u root shutdown
注释:如果MySQL root用户账户有密码,你需要调用命令 C:Program FilesMySQLMySQL Server 5.1inmysqladmin -u root -p shutdown并根据提示输入密码。
该命令调用MySQL管理工具mysqladmin,连接服务器并告知它关闭服务。该命令使用MySQL root用户连接,这是MySQL权限系统中的默认管理账户。请注意MySQL权限系统中的用户完全独立于Windows下的登录用户。
使用该命令安装服务器
C:> mysqld --install
如果只使用服务器名安装mysqld时有问题,尝试使用全路径名来安装。例如:
C:> C:Program FilesMySQLMySQL Server 5.1inmysqld --install
你还可以将MySQL bin目录的路径加到Windows系统PATH环境变量中:
请注意在同一个机器上运行多个MySQL服务器时,不需要在Windows PATH中加入MySQL bin目录。
安装服务时,可以使用MySQL 5.1中的下面的参数:
C:> C:Program FilesMySQLMySQL Server 5.1inmysqld --install MySQL --defaults-file=C:my-opts.cnf
如果不想在引导过程中自动启动服务,还可以将服务设置为手动启动模式。实现的方法是使用--install-manual选项而非--install选项:
C:> C:Program FilesMySQLMySQL Server 5.1inmysqld --install-manual
要想卸载服务器,如果服务正运行则应首先使用命令NET STOP MYSQL停止服务。然后使用--remove选项卸载服务:
C:> C:Program FilesMySQLMySQL Server 5.1inmysqld --remove
注释
一些其他SQL数据库采用“--”作为注释开始标志。MySQL服务器采用“#”作为注释起始字符。对于MySQL服务器,也能使用C风格的注释:/*该处为注释*/。请参见9.5节,“注释语法”。
MySQL服务器3.23.3和更高版本支持“--”注释风格,但要求注释后面跟1空格(或控制字符,如新行)。之所以要求使用空格,是为了防止与自动生成SQL查询有关的问题,它采用了类似下面的代码,其中,自动为“!payment!”插入“payment”的值:
UPDATE account SET credit=credit-!payment!
考虑一下,如果“payment”的值为负数如“-1”时会出现什么情况:
UPDATE account SET credit=credit--1
在SQL中“credit--1”是合法的表达式,但是,如果“--1”被解释为注释开始,部分表达式将被舍弃。其结果是,表达式的意义与预期的意义完全不同。
取消正在输入的命令
如果你决定不想执行正在输入过程中的一个命令,输入c取消它:
mysql> SELECT
-> USER()
-> c
mysql>
这里也要注意提示符,在你输入c以后,它切换回到mysql>,提供反馈以表明mysql准备接受一个新命令。
使用SHOW语句找出服务器上当前存在什么数据库:
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
| tmp |
+----------+
可能你的机器上的数据库列表是不同的,但是很可能有mysql和test数据库。mysql是必需的,因为它描述用户访问权限,test数据库经常作为用户试身手的工作区。