MySQL Database: Features Of MySQL
The following list describes some of the important
Features of 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 are available.
- Fully multi-threaded using kernel threads. It can
easily use multiple CPUs if they are available.
- Provides transactional and non-transactional storage
engines.
- Uses very fast B-tree disk tables (MyISAM)
with index compression.
- Relatively easy to add another storage engine. This
is useful if you want to add an SQL interface to an
in-house database.
- 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 using a highly
optimized class library and should be as fast as
possible. Usually there is no memory allocation at all
after query initialization.
- The MySQL code is tested with Purify (a commercial
memory leakage detector) as well as with Valgrind, a GPL
tool
- The server is available as a separate program for
use in a client/server networked environment. It is also
available as a library that can be embedded (linked)
into standalone applications. Such applications can be
used in isolation or in environments where no network is
available.
- Column Types
- 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,
ENUM, and
OpenGIS spatial types.
- Fixed-length and variable-length records.
- Statements and Functions
- Security
- A privilege and password system that is very
flexible and secure, and that 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. We use MySQL Server with
databases that contain 50 million records. We also know
of users who use MySQL Server with 60,000 tables and
about 5,000,000,000 rows.
- Up to 64 indexes per table are allowed (32 before
MySQL 4.1.2). Each index may consist of 1 to 16 columns
or parts of columns. The maximum index width is 1000
bytes (500 before MySQL 4.1.2). An index may use a
prefix of a column for
CHAR,
VARCHAR,
BLOB, or
TEXT column types.
- Connectivity
- Clients can connect to the MySQL server using TCP/IP
sockets on any platform. On Windows systems in the NT
family (NT, 2000, XP, or 2003), clients can connect
using named pipes. On Unix systems, clients can connect
using Unix domain socket files.
- In MySQL versions 4.1 and higher, Windows servers
also support shared-memory connections if started with
the
--shared-memory option.
Clients can connect through shared memory by using the
--protocol=memory option.
- The Connector/ODBC (MyODBC) interface provides MySQL
support for client programs that use ODBC (Open Database
Connectivity) connections. For example, you can use MS
Access to connect to your MySQL server. Clients can be
run on Windows or Unix. MyODBC source is available. All
ODBC 2.5 functions are supported, as are many others.
- The Connector/J interface provides MySQL support for
Java client programs that use JDBC connections. Clients
can be run on Windows or Unix. Connector/J source is
available.
- Localization
- The server can provide error messages to clients in
many languages.
- Full support for several different character sets,
including
latin1
(ISO-8859-1),
german,
big5,
ujis, and more. For example, the Scandinavian
characters 'â', 'ä'
and 'ö' are allowed in
table and column names. Unicode support is available as
of MySQL 4.1.
- 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 (using Swedish collation by default). It is possible
to change this when the MySQL server is started. To see
an example of very advanced sorting, look at the Czech
sorting code. MySQL Server supports many different
character sets that can be specified at compile time and
runtime.
- Clients and Tools
- The MySQL server has built-in support for SQL
statements to check, optimize, and repair tables. These
statements are available from the command line through
the mysqlcheck client.
MySQL also includes myisamchk,
a very fast command-line utility for performing these
operations on
MyISAM
tables.
- All MySQL programs can be invoked with the
--help or
-? options to obtain online
assistance.
MySQL 3.22 had a 4GB (4 gigabyte) limit on table size. With
the
MyISAM storage engine in
MySQL 3.23, the maximum table size was increased to 8
million terabytes (2 ^ 63 bytes). With this larger allowed
table size, the maximum effective table size for MySQL
databases is usually determined by operating system
constraints on file sizes, not by MySQL internal limits.
The
InnoDB storage engine
maintains
InnoDB tables within
a tablespace that can be created from several files. This
allows a table to exceed the maximum individual file size.
The tablespace can include raw disk partitions, which allows
extremely large tables. The maximum tablespace size is 64TB.
The following table lists some examples of operating
system file-size limits. This is only a rough guide and is
not intended to be definitive. For the most up-to-date
information, be sure to check the documentation specific to
your operating system.
On Linux 2.2, you can get
MyISAM
tables larger than 2GB in size by using the Large File
Support (LFS) patch for the ext2 filesystem. On Linux 2.4,
patches also exist for ReiserFS to get support for big files
(up to 2TB). Most current Linux distributions are based on
kernel 2.4 and include all the required LFS patches. With
JFS and XFS, petabyte and larger files are possible on
Linux. However, the maximum available file size still
depends on several factors, one of them being the filesystem
used to store MySQL tables.
Support
Do you think that we can improve this page "Features of
MySQL", we welcome your valuable comments. This article
"Features of MySQL" was prepared by Ahamed Ebrahim.
|