|
MySQL
is the world's most popular Open Source Database, designed for speed,
power and precision in mission critical, heavy load use. It has more
than 4 million installations powering websites, data warehouses,
business applications, logging systems and more.
MySQL
is a program that can store large amounts of information in an organized
format that is easily accessible from scripting languages. The MySQL
software delivers a robust SQL (Structured Query Language) database
server.
The
company was founded in Sweden by two Swedes and
a Finn: David Axmark, Allan Larsson and Michael "Monty" Widenius
who have worked together since the 80's. MySQL AB is the sole owner of the MySQL™ server
source code, the MySQL trademark and the mysql.com domain worldwide.
The company is privately held and without debt, and has been financed
by venture capital since July 2001.
The
following list describes some of the important characteristics of
the MySQL Database Software:
Internals and Portability
|
-
|
Written
in C and C++. Tested with a broad range of different compilers
|
|
-
|
Works
on many different platforms
|
|
-
|
Uses
GNU Automake, Autoconf, and Libtool for portability
|
|
-
|
APIs
for C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl
|
|
-
|
Fully
multi-threaded using kernel threads. This means it can easily
use multiple CPUs if available
|
|
-
|
Very
fast B-tree disk tables with index compression
|
|
-
|
A
very fast thread-based memory allocation system
|
|
-
|
Very
fast joins using an optimized one-sweep multi-join
|
|
-
|
In-memory
hash tables which are used as temporary tables
|
|
-
|
SQL
functions are implemented through a highly optimized class
library - usually there is not any memory allocation at all
after query initialization
|
|
-
|
The
MySQL™ code gets tested with Purify (a commercial memory
leakage detector) as well as with Valgrind, a GPL tool (http://developer.kde.org/~sewardj/).
|
Column
Types
|
-
|
Employs
many column types: signed/unsigned integers 1, 2, 3, 4, and
8 bytes long, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE,
TIME, DATETIME, TIMESTAMP, YEAR, SET, and ENUM
|
|
-
|
Fixed-length
and variable-length records
|
|
-
|
All
columns have default values - use INSERT to insert a subset
of a table's columns; those columns that are not explicitly
given values are set to default values.
|
Commands
and Functions
|
-
|
Full
operator and function support in the SELECT and WHERE parts
of queries. For example:
mysql> SELECT CONCAT(first_name, " ", last_name)
-> FROM tbl_name
-> WHERE income/dependents > 10000 AND age > 30;
|
|
-
|
Full
support for SQL GROUP BY and ORDER BY clauses. Support for
group functions (COUNT(), COUNT(DISTINCT ...), AVG(), STD(),
SUM(), MAX(), and MIN())
|
|
-
|
Support
for LEFT OUTER JOIN and RIGHT OUTER JOIN with ANSI SQL and
ODBC syntax
|
|
-
|
Aliases
on tables and columns are allowed as in the SQL92 standard
|
|
-
|
DELETE,
INSERT, REPLACE, and UPDATE return the number of rows that
were changed (affected) - It is possible to return the number
of rows matched instead by setting a flag when connecting
to the server
|
|
-
|
The
MySQL-specific SHOW command can be used to retrieve information
about databases, tables, and indexes
|
|
-
|
The
EXPLAIN command can be used to determine how the optimizer
resolves a query
|
|
-
|
Function
names do not clash with table or column names. For example,
ABS is a valid column name. The only restriction is that
for a function call, no spaces are allowed between the function
name and the `(' that follows it
|
|
-
|
You
can mix tables from different databases in the same query
|
Security
|
-
|
A
privilege and password system that is very flexible and secure,
and allows host-based verification
|
|
-
|
Passwords
are secure because all password traffic is encrypted when
you connect to a server
|
Scalability
and Limits
|
-
|
Handles
large databases. MySQL Server can handle databases that contain
50 million records and we know of users that use MySQL Server
with 60,000 tables and about 5,000,000,000 rows
|
|
-
|
Up
to 32 indexes per table are allowed. Each index may consist
of 1 to 16 columns or parts of columns. The maximum index
width is 500 bytes (this may be changed when compiling MySQL
Server). An index may use a prefix of a CHAR or VARCHAR field
|
Connectivity
|
-
|
Clients
may connect to the MySQL server using TCP/IP Sockets, Unix
Sockets (Unix), or Named Pipes (NT)
|
|
-
|
ODBC
(Open-DataBase-Connectivity) support for Win32 (with source).
All ODBC 2.5 functions and many others. For example, MS Access
can be used to connect to MySQL server
|
Localization
|
-
|
The
server can provide error messages to clients in many languages
|
|
-
|
Full
support for several different character sets, including ISO-8859-1
(Latin1), german, big5, ujis, and more. (For example, the
Scandinavian characters 'å', 'ä' and 'ö' are allowed in table
and column names.)
|
|
-
|
All
data is saved in the chosen character set. All comparisons
for normal string columns are case-insensitive
|
|
-
|
Sorting
is done according to the chosen character set (the Swedish
way by default). It is possible to change this when the MySQL
server is started
|
|
-
|
MySQL
Server supports many different character sets that can be
specified at compile and runtime
|
Clients
and Tools
|
-
|
Includes
myisamchk, a very fast utility for table checking, optimization,
and repair - all of the functionality of myisamchk is also
available through the SQL interface as well
|
|
-
|
All
MySQL programs can be invoked with the --help or -? options
to obtain online assistance
|
|