mirror of
https://github.com/MariaDB/server.git
synced 2025-10-28 17:15:19 +03:00
Added documentation about GEMINI tables
This commit is contained in:
180
Docs/manual.texi
180
Docs/manual.texi
@@ -487,7 +487,8 @@ MySQL Table Types
|
||||
* ISAM:: ISAM tables
|
||||
* HEAP:: HEAP tables
|
||||
* BDB:: BDB or Berkeley_db tables
|
||||
* INNOBASE::
|
||||
* GEMINI:: GEMINI tables
|
||||
* INNOBASE:: INNOBASE tables
|
||||
|
||||
MyISAM Tables
|
||||
|
||||
@@ -509,11 +510,18 @@ BDB or Berkeley_db Tables
|
||||
* BDB TODO::
|
||||
* BDB errors::
|
||||
|
||||
GEMINI tables
|
||||
|
||||
* GEMINI overview::
|
||||
* GEMINI start::
|
||||
* GEMINI features::
|
||||
* GEMINI TODO::
|
||||
|
||||
INNOBASE Tables
|
||||
|
||||
* INNOBASE overview::
|
||||
* Innobase startup options::
|
||||
* Using Innobase tables::
|
||||
* INNOBASE start::
|
||||
* Using INNOBASE tables::
|
||||
* INNOBASE restrictions::
|
||||
|
||||
MySQL Tutorial
|
||||
@@ -582,7 +590,7 @@ Replication in MySQL
|
||||
* Replication Options:: Replication Options in my.cnf
|
||||
* Replication SQL:: SQL Commands related to replication
|
||||
* Replication FAQ:: Frequently Asked Questions about replication
|
||||
* Troubleshooting Replication:: Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication.
|
||||
* Troubleshooting Replication:: Troubleshooting Replication
|
||||
|
||||
Getting Maximum Performance from MySQL
|
||||
|
||||
@@ -4198,7 +4206,7 @@ Please report bad or out-of-date mirrors to @email{webmaster@@mysql.com}.
|
||||
@c @uref{http://mysql.tradenet.ee, WWW}
|
||||
|
||||
@item
|
||||
@c EMAIL: tonu@spamm.ee (Tõnu Samuel)
|
||||
@c EMAIL: tonu@spam.ee (Tõnu Samuel)
|
||||
@image{Flags/estonia} Estonia [OKinteractive] @
|
||||
@uref{http://mysql.mirror.ok.ee, WWW}
|
||||
|
||||
@@ -9527,6 +9535,12 @@ problems. @xref{Windows}.
|
||||
If you are using BDB (Berkeley DB) tables, you should familiarize
|
||||
yourself with the different BDB specific startup options. @xref{BDB start}.
|
||||
|
||||
If you are using Gemini tables, refer to the Gemini-specific startup options.
|
||||
@xref{GEMINI start}.
|
||||
|
||||
If you are using Innobase tables, refer to the Innobase-specific startup
|
||||
options. @xref{INNOBASE start}.
|
||||
|
||||
@node Automatic start, Command-line options, Starting server, Post-installation
|
||||
@subsection Starting and Stopping MySQL Automatically
|
||||
@cindex starting, the server automatically
|
||||
@@ -10911,9 +10925,10 @@ Many of our users who have speed foremost in their minds are not at all
|
||||
concerned about transactions. For them transactions are not an
|
||||
issue. For those of our users who are concerned with or have wondered
|
||||
about transactions vis-a-vis @strong{MySQL}, there is a ``@strong{MySQL}
|
||||
way'' as we have outlined above. For those where safety is more important
|
||||
than speed, we recommend them to use the @code{BDB} tables for all their
|
||||
critical data. @xref{BDB}.
|
||||
way'' as we have outlined above. For those where safety is more
|
||||
important than speed, we recommend them to use the @code{BDB},
|
||||
@code{GEMINI} or @code{INNOBASE} tables for all their critical
|
||||
data. @xref{Table types}.
|
||||
|
||||
One final note: We are currently working on a safe replication schema
|
||||
that we believe to be better than any commercial replication system we
|
||||
@@ -11139,12 +11154,14 @@ Entry level SQL92. ODBC levels 0-2.
|
||||
@cindex tables, updating
|
||||
@cindex updating, tables
|
||||
@cindex @code{BDB} tables
|
||||
|
||||
@cindex @code{GEMINI} tables
|
||||
@cindex @code{INNOBASE} tables
|
||||
|
||||
The following mostly applies only for @code{ISAM}, @code{MyISAM}, and
|
||||
@code{HEAP} tables. If you only use transaction-safe tables (@code{BDB}
|
||||
tables) in an a update, you can do @code{COMMIT} and @code{ROLLBACK} also
|
||||
with @strong{MySQL}. @xref{COMMIT}.
|
||||
@code{HEAP} tables. If you only use transaction-safe tables (@code{BDB},
|
||||
@code{GEMINI} or @code{INNOBASE} tables) in an a update, you can do
|
||||
@code{COMMIT} and @code{ROLLBACK} also with @strong{MySQL}.
|
||||
@xref{COMMIT}.
|
||||
|
||||
The problem with handling @code{COMMIT}-@code{ROLLBACK} efficiently with
|
||||
the above table types would require a completely different table layout
|
||||
@@ -18339,6 +18356,7 @@ The different table types are:
|
||||
|
||||
@multitable @columnfractions .20 .80
|
||||
@item BDB or Berkeley_db @tab Transaction-safe tables with page locking. @xref{BDB}.
|
||||
@item GEMINI @tab Transaction-safe tables with row-level locking @xref{GEMINI}.
|
||||
@item HEAP @tab The data for this table is only stored in memory. @xref{HEAP}.
|
||||
@item ISAM @tab The original table handler. @xref{ISAM}.
|
||||
@item INNOBASE @tab Transaction-safe tables with row locking. @xref{INNOBASE}.
|
||||
@@ -22608,6 +22626,7 @@ used them.
|
||||
@cindex table types, choosing
|
||||
@cindex @code{BDB} table type
|
||||
@cindex @code{Berkeley_db} table type
|
||||
@cindex @code{GEMINI} table type
|
||||
@cindex @code{HEAP} table type
|
||||
@cindex @code{ISAM} table type
|
||||
@cindex @code{INNOBASE} table type
|
||||
@@ -22678,7 +22697,8 @@ of both worlds.
|
||||
* ISAM:: ISAM tables
|
||||
* HEAP:: HEAP tables
|
||||
* BDB:: BDB or Berkeley_db tables
|
||||
* INNOBASE::
|
||||
* GEMINI:: GEMINI tables
|
||||
* INNOBASE:: INNOBASE tables
|
||||
@end menu
|
||||
|
||||
@node MyISAM, MERGE, Table types, Table types
|
||||
@@ -23295,7 +23315,7 @@ SUM_OVER_ALL_KEYS(max_length_of_key + sizeof(char*) * 2)
|
||||
|
||||
@cindex tables, @code{BDB}
|
||||
@cindex tables, @code{Berkeley DB}
|
||||
@node BDB, INNOBASE, HEAP, Table types
|
||||
@node BDB, GEMINI, HEAP, Table types
|
||||
@section BDB or Berkeley_db Tables
|
||||
|
||||
@menu
|
||||
@@ -23310,9 +23330,8 @@ SUM_OVER_ALL_KEYS(max_length_of_key + sizeof(char*) * 2)
|
||||
@node BDB overview, BDB install, BDB, BDB
|
||||
@subsection Overview over BDB tables
|
||||
|
||||
BDB tables are included in the @strong{MySQL} source distribution
|
||||
starting from 3.23.34 and will be activated in the @strong{MySQL}-max
|
||||
binary.
|
||||
BDB is included in the @strong{MySQL} source distribution starting
|
||||
from 3.23.34 and will be activated in the @strong{MySQL}-max binary.
|
||||
|
||||
Berkeley DB (@uref{http://www.sleepycat.com}) has provided
|
||||
@strong{MySQL} with a transaction-safe table handler. This will survive
|
||||
@@ -23509,22 +23528,103 @@ This is not fatal but we don't recommend that you delete tables if you are
|
||||
not in @code{auto_commit} mode, until this problem is fixed (the fix is
|
||||
not trivial).
|
||||
|
||||
@node INNOBASE, , BDB, Table types
|
||||
@cindex tables, @code{GEMINI}
|
||||
@node GEMINI, INNOBASE, BDB, Table types
|
||||
@section GEMINI Tables
|
||||
|
||||
@menu
|
||||
* GEMINI overview::
|
||||
* GEMINI start::
|
||||
* GEMINI features::
|
||||
* GEMINI TODO::
|
||||
@end menu
|
||||
|
||||
@node GEMINI overview, GEMINI start, GEMINI, GEMINI
|
||||
@subsection Overview of GEMINI tables
|
||||
|
||||
The @code{GEMINI} table type is developed and supported by NuSphere Corporation
|
||||
(@uref{http://www.nusphere.com}). It features row-level locking, transaction
|
||||
support (@code{COMMIT} and @code{ROLLBACK}), and automatic crash recovery.
|
||||
|
||||
@code{GEMINI} tables will be included in the @strong{MySQL} 4.0 source
|
||||
distribution.
|
||||
|
||||
@node GEMINI start, GEMINI features, GEMINI overview, GEMINI
|
||||
@subsection GEMINI startup options
|
||||
|
||||
If you are running with @code{AUTOCOMMIT=0} then your changes in @code{GEMINI}
|
||||
tables will not be updated until you execute @code{COMMIT}. Instead of commit
|
||||
you can execute @code{ROLLBACK} to forget your changes. @xref{COMMIT}.
|
||||
|
||||
If you are running with @code{AUTOCOMMIT=1} (the default), your changes
|
||||
will be committed immediately. You can start an extended transaction with
|
||||
the @code{BEGIN WORK} SQL command, after which your changes will not be
|
||||
committed until you execute @code{COMMIT} (or decide to @code{ROLLBACK}
|
||||
the changes).
|
||||
|
||||
The following options to @code{mysqld} can be used to change the behavior of
|
||||
GEMINI tables:
|
||||
|
||||
@multitable @columnfractions .30 .70
|
||||
@item @strong{Option} @tab @strong{Meaning}
|
||||
@item @code{--gemini-full-recovery} @tab Default.
|
||||
@item @code{--gemini-no-recovery} @tab Turn off recovery logging. Not recommended.
|
||||
@item @code{--gemini-lazy-commit} @tab Relaxes the flush log at commit rule.
|
||||
@item @code{--gemini-unbuffered-io} @tab All database writes bypass OS cache.
|
||||
@item @code{--skip-gemini} @tab Don't use Gemini.
|
||||
@item @code{--O gemini_db_buffers=#} @tab Number of database buffers in database cache.
|
||||
@item @code{--O gemini_connection_limit=#} @tab Maximum number of connections to Gemini.
|
||||
@item @code{--O gemini_spin_retries=#} @tab Spin lock retries (optimization).
|
||||
@item @code{--O gemini_io_threads=#} @tab Number of background I/O threads.
|
||||
@item @code{--O gemini_lock_table_size=#} @tab Set the maximum number of locks. Default 4096.
|
||||
@end multitable
|
||||
|
||||
If you use @code{--skip-gemini}, @strong{MySQL} will not initialize the
|
||||
Gemini table handler, saving memory; you cannot use Gemini tables if you
|
||||
use @code{--skip-gemini}.
|
||||
|
||||
@node GEMINI features, GEMINI TODO, GEMINI start, GEMINI
|
||||
@subsection Features of @code{GEMINI} tables:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
If a query result can be resolved solely from the index key, Gemini will
|
||||
not read the actual row stored in the database.
|
||||
@item
|
||||
Locking on Gemini tables is done at row level.
|
||||
@item
|
||||
@code{SELECT COUNT(*) FROM table_name} is fast; Gemini maintains a count
|
||||
of the number of rows in the table.
|
||||
@end itemize
|
||||
|
||||
@node GEMINI TODO, , GEMINI features, GEMINI
|
||||
@subsection Current limitations of @code{GEMINI} tables:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
BLOB columns are not supported in @code{GEMINI} tables.
|
||||
@item
|
||||
The maximum number of concurrent users accessing @code{GEMINI} tables is
|
||||
limited by @code{gemini_connection_limit}. The default is 100 users.
|
||||
@end itemize
|
||||
|
||||
NuSphere is working on removing these limitations.
|
||||
|
||||
@node INNOBASE, , GEMINI, Table types
|
||||
@section INNOBASE Tables
|
||||
|
||||
@menu
|
||||
* INNOBASE overview::
|
||||
* Innobase startup options::
|
||||
* Using Innobase tables::
|
||||
* INNOBASE restrictions::
|
||||
* INNOBASE start:: INNOBASE startup options
|
||||
* Using INNOBASE tables:: Using INNOBASE tables
|
||||
* INNOBASE restrictions:: Some restrictions on @code{INNOBASE} tables:
|
||||
@end menu
|
||||
|
||||
@node INNOBASE overview, Innobase startup options, INNOBASE, INNOBASE
|
||||
@node INNOBASE overview, INNOBASE start, INNOBASE, INNOBASE
|
||||
@subsection INNOBASE Tables overview
|
||||
|
||||
Innobase tables are included in the @strong{MySQL} source distribution
|
||||
starting from 3.23.34 and will be activated in the @strong{MySQL}-max
|
||||
binary.
|
||||
Innobase is included in the @strong{MySQL} source distribution starting
|
||||
from 3.23.34 and will be activated in the @strong{MySQL}-max binary.
|
||||
|
||||
If you have downloaded a binary version of @strong{MySQL} that includes
|
||||
support for Berkeley DB, simply follow the instructions for
|
||||
@@ -23550,8 +23650,8 @@ Innobase is a table handler that is under the GNU GPL License Version 2
|
||||
(of June 1991). In the source distribution of MySQL, Innobase appears as
|
||||
a subdirectory.
|
||||
|
||||
@node Innobase startup options, Using Innobase tables, INNOBASE overview, INNOBASE
|
||||
@subsection Innobase startup options
|
||||
@node INNOBASE start, Using INNOBASE tables, INNOBASE overview, INNOBASE
|
||||
@subsection INNOBASE startup options
|
||||
|
||||
To use Innobase tables you must specify configuration parameters
|
||||
in the MySQL configuration file in the @code{[mysqld]} section of
|
||||
@@ -23647,8 +23747,8 @@ Innobase cannot notice. In cases like this the timeout is useful to
|
||||
resolve the situation.
|
||||
@end multitable
|
||||
|
||||
@node Using Innobase tables, INNOBASE restrictions, Innobase startup options, INNOBASE
|
||||
@subsection Using Innobase tables
|
||||
@node Using INNOBASE tables, INNOBASE restrictions, INNOBASE start, INNOBASE
|
||||
@subsection Using INNOBASE tables
|
||||
|
||||
Technically, Innobase is a database backend placed under MySQL. Innobase
|
||||
has its own buffer pool for caching data and indexes in main
|
||||
@@ -23721,7 +23821,7 @@ P.O.Box 800
|
||||
Finland
|
||||
@end example
|
||||
|
||||
@node INNOBASE restrictions, , Using Innobase tables, INNOBASE
|
||||
@node INNOBASE restrictions, , Using INNOBASE tables, INNOBASE
|
||||
@subsection Some restrictions on @code{INNOBASE} tables:
|
||||
|
||||
@itemize @bullet
|
||||
@@ -26472,7 +26572,7 @@ tables}.
|
||||
* Replication Options:: Replication Options in my.cnf
|
||||
* Replication SQL:: SQL Commands related to replication
|
||||
* Replication FAQ:: Frequently Asked Questions about replication
|
||||
* Troubleshooting Replication:: Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication. Troubleshooting Replication.
|
||||
* Troubleshooting Replication:: Troubleshooting Replication
|
||||
@end menu
|
||||
|
||||
@node Replication Intro, Replication Implementation, Replication, Replication
|
||||
@@ -29911,7 +30011,7 @@ performance in a threaded system!
|
||||
|
||||
@xref{Multiple servers}.
|
||||
|
||||
This is an example of the config file on behalf of @code{mysqld_multi}.
|
||||
This is an example of the config file on behalf of @code{mysqld_multi}.
|
||||
|
||||
@example
|
||||
# This file should probably be in your home dir (~/.my.cnf) or /etc/my.cnf
|
||||
@@ -39136,8 +39236,7 @@ Two APIs are available in the @strong{MySQL}
|
||||
@section MySQL Python APIs
|
||||
|
||||
The @strong{MySQL} @uref{http://www.mysql.com/Downloads/Contrib/,Contrib directory}
|
||||
contains a Python
|
||||
interface written by Joseph Skinner.
|
||||
contains a Python interface written by Joseph Skinner.
|
||||
|
||||
You can also use the Python interface to iODBC to access a
|
||||
@strong{MySQL} server.
|
||||
@@ -41447,6 +41546,12 @@ Our security expert.
|
||||
@item
|
||||
Vio interface (foundation for the the encrypted client/server protocol).
|
||||
@item
|
||||
MySQL Filesystem (Way to use MySQL databases as files and directories).
|
||||
@item
|
||||
CASE Expression
|
||||
@item
|
||||
MD5(), COALESCE() functions.
|
||||
@item
|
||||
@code{RAID} support for @code{MyISAM} tables.
|
||||
@end itemize
|
||||
|
||||
@@ -41902,6 +42007,8 @@ not yet 100 % confident in this code.
|
||||
Added the @code{INNOBASE} table handler and the @code{BDB} table handler
|
||||
to the @strong{MySQL} source distribution.
|
||||
@item
|
||||
Updated the documentation about @code{GEMINI} tables.
|
||||
@item
|
||||
@code{REPLACE} will not replace a row that conflicts with an
|
||||
@code{auto_increment} generated key.
|
||||
@item
|
||||
@@ -46804,6 +46911,11 @@ ORDER BY columns in the result, something that is you are not allowed
|
||||
to do in ANSI SQL.
|
||||
|
||||
@item
|
||||
Because @strong{MySQL} allows you to work with table types that doesn't
|
||||
support transactions (and thus can't @code{rollback} data) some things
|
||||
behaves a little different in @strong{MySQL} than in other SQL servers:
|
||||
(This is just to ensure that @strong{MySQL} never need to do a rollback
|
||||
for a SQL command). This may be a little akward at times as column
|
||||
Because @strong{MySQL} allows you to work with table types that don't
|
||||
support transactions, and thus can't @code{rollback} data, some things
|
||||
behave a little differently in @strong{MySQL} than in other SQL servers.
|
||||
|
||||
Reference in New Issue
Block a user