Author: mcbrown
Date: 2007-06-19 14:40:33 +0200 (Tue, 19 Jun 2007)
New Revision: 6860
Log:
Updating Falcond documenation for the forthcoming beta release, including:
- Changes as notified by Calvin
- WL#3923 (Arbitrary Precision Divission for BigInt)
- WL#3870 New Falcon @@ options
- Bug #26328
- Bug #26607
Modified:
trunk/falcon/falcon-installation.xml
trunk/falcon/falcon-roadmap.xml
trunk/falcon/falcon.xml
trunk/falcon/news-falcon.xml
trunk/falcon/se-falcon.xml
Modified: trunk/falcon/falcon-installation.xml
===================================================================
--- trunk/falcon/falcon-installation.xml 2007-06-19 10:59:38 UTC (rev 6859)
+++ trunk/falcon/falcon-installation.xml 2007-06-19 12:40:33 UTC (rev 6860)
Changed blocks: 3, Lines Added: 3, Lines Deleted: 3; 1285 bytes
@@ -36,7 +36,7 @@
<listitem>
<para>
- GNU <command>automake</command> 1.8 (or newer)
+ GNU <command>automake</command> 1.8.1 (or newer)
</para>
</listitem>
@@ -187,7 +187,7 @@
For Pentium CPUs, use
<command>compile-pentium-debug-falcon</command>, for AMD 64
CPUs, use <command>compile-amd64-debug-falcon</command>. The
- build scipts are located in the <filename>BUILD</filename>, but
+ build scripts are located in the <filename>BUILD</filename>, but
they should be executed from the root directory of the tree:
</para>
@@ -215,7 +215,7 @@
<para>
The above command will create an archive with all the files you
- need configured to behave as if they were in a directoy named
+ need configured to behave as if they were in a directory named
according to the version and tag for this release. For example,
on a Linux Pentium machine, the Falcon release will create an
archive with the name
Modified: trunk/falcon/falcon-roadmap.xml
===================================================================
--- trunk/falcon/falcon-roadmap.xml 2007-06-19 10:59:38 UTC (rev 6859)
+++ trunk/falcon/falcon-roadmap.xml 2007-06-19 12:40:33 UTC (rev 6860)
Changed blocks: 2, Lines Added: 0, Lines Deleted: 24; 846 bytes
@@ -19,12 +19,6 @@
<listitem>
<para>
- Index super-nodes
- </para>
- </listitem>
-
- <listitem>
- <para>
XA Transactions including durable two phase commit
</para>
</listitem>
@@ -53,24 +47,6 @@
</para>
</listitem>
- <listitem>
- <para>
- Falcon tablespaces
- </para>
- </listitem>
-
- <listitem>
- <para>
- Additional tuning parameters, include log file placement
- </para>
- </listitem>
-
- <listitem>
- <para>
- Foreign key support
- </para>
- </listitem>
-
</itemizedlist>
</appendix>
Modified: trunk/falcon/falcon.xml
===================================================================
--- trunk/falcon/falcon.xml 2007-06-19 10:59:38 UTC (rev 6859)
+++ trunk/falcon/falcon.xml 2007-06-19 12:40:33 UTC (rev 6860)
Changed blocks: 1, Lines Added: 1, Lines Deleted: 1; 499 bytes
@@ -58,7 +58,7 @@
<note>
<para>
- Thet mysql-6.0-falcon tree may not include all feature or bug
+ The mysql-6.0-falcon tree may not include all feature or bug
fixes that have been applied to previous releases of MySQL.
</para>
</note>
Modified: trunk/falcon/news-falcon.xml
===================================================================
--- trunk/falcon/news-falcon.xml 2007-06-19 10:59:38 UTC (rev 6859)
+++ trunk/falcon/news-falcon.xml 2007-06-19 12:40:33 UTC (rev 6860)
Changed blocks: 5, Lines Added: 53, Lines Deleted: 2; 2701 bytes
@@ -23,6 +23,35 @@
<title>Changes in release 6.0.1 (Not yet released)</title>
<para>
+ Functionality added or changed:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ 64-bit Windows support.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Support for tablespaces.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ New performance settings,
+ <literal>falcon_log_windows</literal>,
+ <literal>falcon_index_chill_threshold</literal>, and
+ <literal>falcon_record_chill_threshold</literal>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
Bugs fixed:
</para>
@@ -30,6 +59,21 @@
<listitem>
<para>
+ Queries could fail with a <literal>Can't find record in
+ ...</literal> error. (Bug #26328)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>DECIMAL</literal> columns with large widths did not
+ work, either during <literal>INSERT</literal> or
+ <literal>SELECT</literal>. (Bug #26607).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
Renaming a database would raise error <literal>ERROR 1030
(HY000): Got error 157 from storage engine</literal>. (Bug
#22182)
@@ -153,6 +197,13 @@
</para>
</listitem>
+ <listitem>
+ <para>
+ Performance diagnostics are available through
+ <literal>INFORMATION_SCHEMA</literal>.
+ </para>
+ </listitem>
+
</itemizedlist>
<para>
@@ -216,7 +267,7 @@
Creating a table with a 19 digit <literal>DECIMAL</literal>
column would cause incorrect data to be stored. This is due to
current limitation in Falcon where you cannot create a table
- with a column with greateer than 18 digits precision (i.e.
+ with a column with greater than 18 digits precision (i.e.
<literal>DECIMAL(18,9)</literal>). Creating a column with
larger than this specification will fail and raise an error.
(Bug #27962)
@@ -489,7 +540,7 @@
<listitem>
<para>
- Performance improvements: thread bottleneckes have been
+ Performance improvements: thread bottlenecks have been
reduced when a larger number of parallel auto-commit threads
executed a trivial query in a hard loop.
</para>
Modified: trunk/falcon/se-falcon.xml
===================================================================
--- trunk/falcon/se-falcon.xml 2007-06-19 10:59:38 UTC (rev 6859)
+++ trunk/falcon/se-falcon.xml 2007-06-19 12:40:33 UTC (rev 6860)
Changed blocks: 9, Lines Added: 302, Lines Deleted: 64; 18843 bytes
@@ -11,7 +11,7 @@
<para>
This chapter contains information on using Falcon, including
- configuration parameters, detals on how Falcon works internally and
+ configuration parameters, details on how Falcon works internally and
the limitations of the current release.
</para>
@@ -20,7 +20,7 @@
<title>Configuration Parameters</title>
<para>
- Parameters are configured through the standard
+ Parameters are configured through the standard MySQL
<filename>my.cnf</filename> or <filename>my.ini</filename>
file.
Parameters can be configured by specifying the parameter name and
the corresponding value, separated by a space. Memory values can
@@ -48,25 +48,93 @@
Cache Base) sets the minimum amount of memory that will be
allocated for caching record data. When cache memory is
scavenged, the process will stop when the cache usage reaches
- this value. The default is
- <literal>falcon_max_record_memory</literal>/2 (10MB).
+ this value.
</para>
+
+ <para>
+ The default is <literal>falcon_max_record_memory</literal>/2
+ (10MB).
+ </para>
</listitem>
<listitem>
<para>
+ <literal>falcon_log_windows</literal> — the number of
+ memory windows allocated for the Falcon serial log. Each
+ window is 1 MByte in size.
+ </para>
+
+ <para>
+ The minimum accepted value is 10, the maximum is 32768 and the
+ default value is 10.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>falcon_index_chill_threshold</literal> — the
+ number of megabytes of pending index data that should be
+ stored during a large transaction before the index changes are
+ flushed to the serial log. If the index is unique, or the
+ transaction regularly re-reads the index data, then the index
+ data is stored in memory (for faster access). The flushing of
+ the index data to the serial log is called chilling. Chilling
+ pending indexes helps Falcon to load large data sets in a
+ single transaction without exhausting memory.
+ </para>
+
+ <para>
+ The minimum accepted value is 1, the maximum is 1024 and the
+ default value is 4.
+ </para>
+
+ <para>
+ This configuration option is available within
+ <command>mysqld</command> as a server variable.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>falcon_record_chill_threshold</literal> — the
+ number of Mbytes of pending record data that Falcon will keep
+ in memory during a large transaction before flushing these
+ records to the serial log. This flushing is called chilling
+ since it makes the data not immediately available. If chilled
+ records are accessed again during the transaction, they are
+ immediately restored (thawed) from the serial log. Chilling
+ pending records helps Falcon to accomplish very large
+ transactions without running out of memory.
+ </para>
+
+ <para>
+ The minimum accepted value is 1, the maximum is 1024 and the
+ default value is 5.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
<literal>falcon_max_record_memory</literal> — (Record
Cache Top) sets the maximum size of memory that will be
- allocated for caching record data. The default is 20MB.
+ allocated for caching record data.
</para>
+
+ <para>
+ The default value is 20MB.
+ </para>
</listitem>
<listitem>
<para>
<literal>falcon_page_cache_size</literal> — (Page Cache
Size) sets the amount of memory that will be allocated for
- caching pages from the tablespace file. The default is 4MB.
+ caching pages from the tablespace file.
</para>
+
+ <para>
+ The default value is 4MB.
+ </para>
</listitem>
<!--
@@ -198,41 +266,82 @@
<para>
Within Falcon, all data within one database is stored within a
- single tablespace, which in turn is stored within a single file
- within the MySQL directory structure. A single Falcon database
- will create three main files. One file contains the Falcon data
- and will be stored in a file with the name of the Falcon database
- with the extension <filename>.fts</filename>. For example, Falcon
- tables defined within the database <literal>test</literal> will be
- stored within the file <filename>test.fts</filename> within the
- main MySQL data directory.
+ within a single file within the MySQL directory structure. The
+ file contains the Falcon data and will be stored in a file with
+ the name of the Falcon database with the extension
+ <filename>.fts</filename>. For example, Falcon tables defined
+ within the database <literal>test</literal> will be stored within
+ the file <filename>test.fts</filename> within the main MySQL data
+ directory.
</para>
<para>
- Two further files contain the on-disk copy of the Falcon serial
- log. These are also created within the realm of the corresponding
- database. In a future release, you will be able to specify an
- alternate location for these log files. So with the preceding
- example data file <filename>test.fts</filename> the log files will
- be named <filename>test.fl1</filename> and
- <filename>test.fl2</filename>.
+ Falcon also supports named tablespaces which allow you to store
+ tables within specific files that may be different to the default
+ Falcon storage file for that database. Three Falcon tablespaces
+ are created automatically when the Falcon storage engine is
+ enabled within the server. These tables are:
</para>
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ An unnamed internal tablespace used to hold system tables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>falcon_user</literal>, used as the default location
+ for user defined tables.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>falcon_temporary</literal>, used to hold temporary
+ tables.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
<para>
+ All tablespaces share the same log files, memory and threads.
+ Transactions run transparently across all tablespaces. There is no
+ inherent relationship between a tablespace and the database/schema
+ to which it relates.
+ </para>
+
+ <para>
+ To create a new tablespace, use the <literal>CREATE
+ TABLESPACE</literal> statement:
+ </para>
+
+<programlisting>CREATE TABLESPACE <replaceable>tablespace</replaceable>
+ ADD DATAFILE <replaceable>'file'</replaceable>
+ ENGINE [=] Falcon</programlisting>
+
+ <para>
+ Two further files are created by Falcon, and these contain the
+ on-disk copy of the Falcon serial log. These are also created
+ within the realm of the corresponding database. In a future
+ release, you will be able to specify an alternate location for
+ these log files. So with the preceding example data file
+ <filename>test.fts</filename> the log files will be named
+ <filename>test.fl1</filename> and
<filename>test.fl2</filename>.
+ </para>
+
+ <para>
Table definitions are, as with the other MySQL engines, stored
within a <literal>.frm</literal> file within a database specific
directory. For example, the table <literal>falcontest</literal>
within the <literal>test</literal> database will create the table
definition file <filename>falcontest.frm</filename> within the
- directory test.
+ directory <filename>test</filename>.
</para>
- <para>
- When creating a table within a MySQL database where the
- corresponding Falcon tablespace file does not exist, it will
- automatically be created with the Falcon data file and log files.
- </para>
-
</section>
<section id="se-falcon-createtable">
@@ -272,8 +381,164 @@
<programlisting>CREATE TABLE t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,
name CHAR(30),primary key (id,id2),index index_id3 (id3))
ENGINE=Falcon</programlisting>
+ <para>
+ To create a table within a specific table space, add the
+ <literal>TABLESPACE</literal> definition:
+ </para>
+
+<programlisting>CREATE TABLE names (id INT, fname VARCHAR (20), lname VARCHAR (20))
+ TABLESPACE my_big_tables ENGINE=Falcon</programlisting>
+
+ <para>
+ You can use <literal>ALTER TABLE</literal> to change the
+ tablespace for a given table; Falcon will move the table data to
+ the new tablespace:
+ </para>
+
+<programlisting>ALTER TABLE names TABLESPACE my_small_tables</programlisting>
+
+ <para>
+ You can drop a tablespace when it is empty (i.e. when it no longer
+ contains any tables) using <literal>DROP TABLESPACE</literal>:
+ </para>
+
+<programlisting>DROP TABLESPACE my_big_tables</programlisting>
+
+ <para>
+ You cannot currently alter a tablespace (using <literal>ALTER
+ TABLESPACE</literal>).
+ </para>
+
</section>
+ <section id="se-falcon-stats">
+
+ <title>Obtaining Performance Diagnostics</title>
+
+ <para>
+ Falcon exports internal performance diagnostic information into
+ the global <literal>INFORMATION_SCHEMA</literal> tables.
+ Currently, Falcon generates information into the following tables:
+ </para>
+
+<programlisting>+---------------------------------------+
+| Tables_in_information_schema |
++---------------------------------------+
+| FALCON_RECORD_CACHE_SUMMARY |
+| FALCON_SYSTEM_MEMORY_DETAIL |
+| FALCON_SYSTEM_MEMORY_SUMMARY |
+| FALCON_SYNCOBJECTS |
+| FALCON_RECORD_CACHE_DETAIL |
+| FALCON_TRANSACTION_SUMMARY |
+| FALCON_DATABASE_IO |
+| FALCON_TRANSACTIONS |
+| FALCON_SERIAL_LOG |
++---------------------------------------+</programlisting>
+
+ <table>
+ <title>Falcon <literal>INFORMATION_SCHEMA</literal> performance
diagnostic
+ tables</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>I_S Table</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+
<entry><literal>FALCON_SYSTEM_MEMORY_DETAIL</literal></entry>
+ <entry>System memory detail; gives a detailed account of the object and
memory
+ usage across the different object instances of classes
+ within Falcon.</entry>
+ </row>
+ <row>
+
<entry><literal>FALCON_SYSTEM_MEMORY_SUMMARY</literal></entry>
+ <entry>System system memory summary; provides an overview of the memory
usage
+ in Falcon, including the total memory allocated, free
+ space and fragmentation.</entry>
+ </row>
+ <row>
+
<entry><literal>FALCON_RECORD_CACHE_DETAIL</literal></entry>
+ <entry>Record cache detail; shows the number of active records held in
the
+ record cache and the space they are currently consuming.</entry>
+ </row>
+ <row>
+
<entry><literal>FALCON_RECORD_CACHE_SUMMARY</literal></entry>
+ <entry>Record cache summary shows the space allocated and available for
record
+ storage, including an indication of fragmentation of the
+ record cache.</entry>
+ </row>
+ <row>
+ <entry><literal>FALCON_TRANSACTIONS</literal></entry>
+ <entry>Transactions; shows the currently active transactions and their
status
+ and dependencies, including the number of records affected
+ and the age of the transaction.</entry>
+ </row>
+ <row>
+
<entry><literal>FALCON_TRANSACTION_SUMMARY</literal></entry>
+ <entry>Transaction summary for active transactions.</entry>
+ </row>
+ <row>
+ <entry><literal>FALCON_SYNCOBJECTS</literal></entry>
+ <entry>SyncObjects; shows detail on internal Falcon object
usage.</entry>
+ </row>
+ <row>
+ <entry><literal>FALCON_SERIAL_LOG</literal></entry>
+ <entry>Serial log status information. Shows transactions and serial log
object
+ usage per database.</entry>
+ </row>
+ <row>
+ <entry><literal>FALCON_DATABASE_IO</literal></entry>
+ <entry>I/O statistics showing page size, buffer size, and reads/writes
on a per
+ database basis.</entry>
+ </row>
+ <row>
+ <entry><literal>FALCON_TABLES</literal></entry>
+ <entry>Lists all Falcon tables.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ To obtain the diagnostic information you can run a standard
+ <literal>SELECT</literal> statement. Depending on the I_S table
+ you have chosen, the information may be provided on a database or
+ table basis. If the information is based on a table name and that
+ table is stored within a unique tablespace, then the tablespace
+ name is quoted in the table name. For example, you can get
+ statistics on I/O for Falcon databases from the
+ <literal>falcon_database_io</literal> table:
+ </para>
+
+<programlisting>mysql> select * from information_schema.falcon_database_io;
++----------+-----------+---------+-------+--------+---------+-------+
+| DATABASE | PAGE_SIZE | BUFFERS | READS | WRITES | FETCHES | FAKES |
++----------+-----------+---------+-------+--------+---------+-------+
+| RMS | 4096 | 2560 | 0 | 109 | 98687 | 615 |
+| GIMF | 4096 | 2560 | 565 | 28 | 56870 | 3 |
++----------+-----------+---------+-------+--------+---------+-------+</programlisting>
+
+ <para>
+ You can also <literal>JOIN</literal> information between tables to
+ obtain more specific statistics information. For example, the
+ statement below will show the list of statements on Falcon tables
+ that are currently blocking during transactions:
+ </para>
+
+<programlisting>mysql> select a.id thread, a.user,b.id txn_id,b.database,a.time,
b.waiting_for, statement
+-> from information_schema.processlist a, information_schema.falcon_transactions b
+-> where a.id = b.thread_id;
++--------+------+--------+----------+------+-------------+--------------------------------+
+| thread | user | txn_id | database | time | waiting_for | statement
|
++--------+------+--------+----------+------+-------------+--------------------------------+
+| 2 | root | 8 | GIMF | 0 | 0 |
|
+| 3 | root | 9 | GIMF | 76 | 8 | update rms set c1=5 where c1=1
|
++--------+------+--------+----------+------+-------------+--------------------------------+</programlisting>
+
+ </section>
+
<section id="se-falcon-principles">
<title>Principles and Terminology</title>
@@ -633,7 +898,7 @@
<para>
Falcon was designed to perform best on systems with generous
amounts of memory. The memory caches utilized by Falcon are
- similar in some respects with other RDBMS’s and MySQL engines;
+ similar in some respects with other RDBMS's and MySQL engines;
however, the cache structures offer a number of improvements
over traditional memory caching strategies. The mechanisms used
by Falcon with respect to memory caching include:
@@ -709,8 +974,8 @@
<listitem>
<para>
Because of the support the record cache supplies to
- transactions, a scavenge thread is used to ensure only
- “hot” data resides in the cache. When the
+ transactions, a scavenge thread is used to ensure only "hot"
+ data resides in the cache. When the
<literal>falcon_max_record_memory</literal> limit is
reached, Falcon surveys the demographics of the generational
data in the cache, and removes the oldest generations. This
@@ -781,39 +1046,28 @@
<listitem>
<para>
- Falcon is currently available only for 32-bit Windows and
- 32-bit and 64-bit Linux operating systems.
+ Falcon is currently available only for Windows and Linux
+ operating systerms, both 32-bit and 64-bit.
</para>
</listitem>
<listitem>
<para>
- Falcon performance is not currently optimized for the Alpha
- release. Optimization and platform-specific tuning is planned
- for a future release.
+ The maximum key length is limited 1100 bytes.
</para>
</listitem>
<listitem>
<para>
- For the Alpha release, the maximum key length is limited 1100
- bytes.
- </para>
- </listitem>
-
- <listitem>
- <para>
Serializable isolation levels are not supported.
</para>
</listitem>
<listitem>
<para>
- Falcon is currently limited to to support
- <literal>DECIMAL</literal> columns with a maximum 18 digits
- and 9 digits precision (<literal>DECIMAL(18,9)</literal>).
- Creating a table with a specification larger than this will
- raise an error.
+ Falcon behaves as if the
+ <literal>lower_case_table_names</literal> option has been
+ enabled irrespective of the current platform.
</para>
</listitem>
@@ -831,22 +1085,6 @@
<listitem>
<para>
- There is a limit of 2<superscript>32</superscript> (4.29
- billion) rows for a single table. By using multiple tables
- within the same tablespace you can have more than this number
- of records. In future releases this limit will be removed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Configurable page sizes are not supported, but are planned for
- a future release.
- </para>
- </listitem>
-
- <listitem>
- <para>
Each tablespace has a limit of 2<superscript>32</superscript>
pages within a single tablespace. Through a combination of the
page size and the maximum number of pages in a tablespace,
| Thread |
|---|
| • svn commit - mysqldoc@docsrva: r6860 - trunk/falcon | mcbrown | 19 Jun |