欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
MySQL
MySQL : The world's most popular open source database
目录 |
简介
MySQL提供了十分快速的多线程、多用户、牢靠的SQL(结构化查询语言)数据库服务器。 MySQL服务器定位于任务关键型、重负荷生产系统,并能嵌入在大量部署的软件中。MySQL是MySQL AB的注册商标。
MySQL软件采用双许可方式。用户可根据GNU通用公共许可条款,将MySQL软件作为开放源码产品使用,或从MySQL AB公司购买标准的商业许可证。
MySQL AB概述
MySQL AB是由MySQL创始人和主要开发人创办的公司。MySQL AB最初是由David Axmark、Allan Larsson和Michael“Monty”Widenius在瑞典创办的。
我们致力于开发MySQL数据库软件,并向新用户宣传推广它。MySQL AB拥有MySQL源代码、MySQL徽标和(注册)商标、以及本手册的版权。
公司名中的“AB”是瑞典语“aktiebolag”或“股份公司”的首字母缩写。可将其翻译为“MySQL有限公司”。事实上,MySQL有限公司和MySQLGmbH均是MySQL AB子公司的名称。它们分别位于美国和德国。
MySQL 5
MySQL 5.0 已包含了 MySQL Cluster 技术
MySQL产品
- MySQL Enterprise
- MySQL Enterprise Server
- MySQL Community Server
- MySQL Cluster - http://www.mysql.com/products/database/cluster/
- MaxDB - http://www.mysql.com/products/database/maxdb/
Storage Engine
- Falcon Storage Engine: MySQL 存储引擎的第一选择,
- solidDB: 为MySQL量身定制的开源数据库存储引擎。
- InnoDB: MySQL 上第一个提供外键约束的引擎,除了提供事务处理外,支持行锁,提供和 Oracle 一样的一致性的不加锁读取,能增加并发读的用户数量并提高性能,不会增加锁的数量。
MySQL的的主要特性
- 使用C和C++编写
- 用众多不同的编译器进行了测试
- 能够工作在众多不同的操作系统上。
- 使用GNU Automake、Autoconf和Libtool进行移植。
- 提供了用于C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl的API。
- 采用核心线程的完全多线程 如果有多个CPU,它能方便地使用这些CPU。
- 提供了事务性和非事务性存储引擎。
- 使用了极快的“B树”磁盘表(MyISAM)和索引压缩。
- 添加另一个存储引擎相对简单。如果打算为内部数据库添加一个SQL接口,该特性十分有用。
- 极快的基于线程的内存分配系统。
- 通过使用优化的“单扫描多连接”,能实现极快的连接。
- 存储器中的哈希表用作临时表。
- SQL函数是使用高度优化的类库实现的,运行很快。通常,在完成查询初始化后,不存在存储器分配。
- 采用Purify(商业内存溢出检测器)以及GPL工具Valgrind(http://developer.kde.org/~sewardj/)测试了MySQL代码。
- 服务器可作为单独程序运行在客户端/服务器联网环境下。它也可作为库提供,可嵌入(链接)到独立的应用程序中。这类应用程序可单独使用,也能在网络环境下使用。
安装指南
install a MySQL source distribution 步骤如下:
shell> groupadd mysql shell> useradd -g mysql mysql shell> gunzip < mysql-VERSION.tar.gz | tar -xvf - shell> cd mysql-VERSION shell> ./configure --prefix=/usr/local/mysql shell> make shell> make install shell> cp support-files/my-medium.cnf /etc/my.cnf shell> cd /usr/local/mysql shell> bin/mysql_install_db --user=mysql shell> chown -R root . shell> chown -R mysql var shell> chgrp -R mysql . shell> bin/mysqld_safe --user=mysql &
在 Debian 上安装 MySQL 4.x
apt-get install mysql-client-4.1 mysql-server-4.1 mysql-common-4.1 libmysqlclient14-dev
在 Debian 上安装 MySQL 5.0
安装 MySQL 5.0 需要安装 curses/termcap 包
apt-get install libncurses5-dev 或 从http://packages.debian.org/stable/libdevel/libncurses5-dev 获得deb安装包 dpkg -i libncurses5-dev_5.4-4_i386.deb make make install
apt-get install mysql-server-5.0 apt-get install php5-mysql php5-mysqli mysql-client-5.0
一些信息会自动添加 /etc/php5/apache2/php.ini
extension=mysql.so extension=mysqli.so
charcter set
utf8_general_ci Unicode (多语言), 不区分大小写 utf8_unicode_ci Unicode (多语言), 不区分大小写
utf8_general_ci也适用与德语和法语,除了‘ß’等于‘s’,而不是‘ss’之外。如果你的应用能够接受这些, 那么应该使用utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确。
显然utf8_general_ci目前对我比较合适,一来比较速度快,而来我也好编辑数据,否则每次都要使用utf8_encode 和utf8_decode转来转去,没有办法直接通过文本编辑器来修改。也不符合TAOUP上说的最小立异性原则。
来源: utf8_unicode_ci与utf8_general_ci
CREATE DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
MySQL管理
# /usr/local/bin/mysqld_safe & mysql> set character_set_database=utf8; mysqladmin -uroot password newpassword -p mysqldump --all-databases > backup.sql -uroot -p mysql>GRANT ALL PRIVILEGES ON test.* TO test@localhost IDENTIFIED BY 'test'; mysql>flush privileges;
Windows下
net start mysql5 net stop mysql5
C++编程
Perl编程
Python编程
常见故障
061224 13:38:34 [ERROR] /usr/local/libexec/mysqld: Disk is full writing './wordpress/wp_comments.MYD'
(Errcode: 28). Waiting for someone to free space... Retry in 60 secs // 用户无法访问数据库, 处于阻塞状态. myisamchk wp_comments // 修复成功 :)
不区分大小写
Linux下 在/etc/my.cnf or /etc/mysql/my.cnf下) 添加 [mysqld] lower_case_table_names=1 重启mysql.
注意:要重新导入数据,这时都转换成小写,且可用大、小写查询
MySQL用户
- 在Internet领域:像Google的Web广告系统就采用了MySQL数据平台,这可是Google的一项主要业务,占其收入的90%以上。
- 在事务处理领域:主要是在线交易,像纽约交易所,就是采用了基于MySQL的数据解决方案。
- 在传统行业,如电信领域:像阿尔卡特、爱立信、朗讯、思科等公司,其数据处理平台,也都采用了MySQL。
相关链接
- 官方网站 http://www.mysql.com
- MySQL管理工具 phpMyAdmin
- http://docs.huihoo.com/mysql/
- http://download.huihoo.com/mysql/