Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
daf1a575
Commit
daf1a575
authored
Sep 10, 2002
by
paul@teton.kitebird.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
manual.texi British-ise some -ize words
manual.texi formatting fixups
parent
e8c6e271
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
39 additions
and
37 deletions
+39
-37
Docs/manual.texi
Docs/manual.texi
+39
-37
No files found.
Docs/manual.texi
View file @
daf1a575
...
...
@@ -14933,7 +14933,7 @@ system. This section describes how it works.
Anyone using MySQL on a computer connected to the Internet
should read this section to avoid the most common security mistakes.
In discussing security, we emphasi
z
e the necessity of fully protecting the
In discussing security, we emphasi
s
e the necessity of fully protecting the
entire server host (not simply the MySQL server) against all types
of applicable attacks: eavesdropping, altering, playback, and denial of
service. We do not cover all aspects of availability and fault tolerance
...
...
@@ -19647,7 +19647,7 @@ is high, it is a good indication that your queries and tables are properly index
@item @code{Handler_read_next} @tab Number of requests to read next row in key order. This
will be incremented if you are querying an index column with a range constraint. This also
will be incremented if you are doing an index scan.
@item @code{Handler_read_prev} @tab Number of requests to read previous row in key order. This is mainly used to optimi
z
e @code{ORDER BY ... DESC}.
@item @code{Handler_read_prev} @tab Number of requests to read previous row in key order. This is mainly used to optimi
s
e @code{ORDER BY ... DESC}.
@item @code{Handler_read_rnd} @tab Number of requests to read a row based on a fixed position.
This will be high if you are doing a lot of queries that require sorting of the result.
@item @code{Handler_read_rnd_next} @tab Number of requests to read the next row in the datafile.
...
...
@@ -23672,7 +23672,7 @@ For more details, please see @ref{Replication FAQ}.
If you want to become a real MySQL replication guru, we suggest that you
begin by studying, pondering, and trying all commands
mentioned in @ref{Replication SQL}. You should also familiari
z
e yourself
mentioned in @ref{Replication SQL}. You should also familiari
s
e yourself
with replication startup options in @file{my.cnf} in
@ref{Replication Options}.
...
...
@@ -23960,7 +23960,7 @@ the slave. The other bug is that if the ignored table gets partially
updated, the slave thread will not notice that the table actually should
have been ignored and will suspend the replication process. While the
above bugs are conceptually very simple to fix, we have not yet found a way
to do this without a sig
ficant code change that would compromiz
e the stability
to do this without a sig
nificant code change that would compromis
e the stability
status of 3.23 branch. There exists a workaround for both if in the rare case
it happens to affect your application -- use @code{slave-skip-errors}.
@end itemize
...
...
@@ -25473,7 +25473,7 @@ this join type is good.
Only rows that are in a given range will be retrieved, using an index to
select the rows. The @code{key} column indicates which index is used.
The @code{key_len} contains the longest key part that was used.
The @code{ref} column will be
NULL
for this type.
The @code{ref} column will be
@code{NULL}
for this type.
@item index
This is the same as @code{ALL}, except that only the index tree is
...
...
@@ -25764,8 +25764,9 @@ Constant condition removal (needed because of constant folding):
Constant expressions used by indexes are evaluated only once.
@item
@code{COUNT(*)} on a single table without a @code{WHERE} is retrieved
directly from the table information for MyISAM and HEAP tables. This is
also done for any @code{NOT NULL} expression when used with only one table.
directly from the table information for @code{MyISAM} and @code{HEAP} tables.
This is also done for any @code{NOT NULL} expression when used with only one
table.
@item
Early detection of invalid constant expressions. MySQL quickly
detects that some @code{SELECT} statements are impossible and returns no rows.
...
...
@@ -25876,9 +25877,9 @@ the scanning of the not used tables as soon as it has found the first match.
SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
@end example
In the case, assuming
t1 is used before t2 (check with @code{EXPLAIN}), then
MySQL will stop reading from t2 (for that particular row in t1)
when the first row in t2
is found.
In the case, assuming
@code{t1} is used before @code{t2} (check with
@code{EXPLAIN}), then MySQL will stop reading from @code{t2} (for that
particular row in @code{t1}) when the first row in @code{t2}
is found.
@node LEFT JOIN optimisation, ORDER BY optimisation, DISTINCT optimisation, Query Speed
...
...
@@ -25996,7 +25997,7 @@ do the @code{ORDER BY}:
@item
You are joining many tables and the columns you are doing an @code{ORDER
BY} on are not all from the first not-
const
table that is used to
BY} on are not all from the first not-
@code{const}
table that is used to
retrieve rows (This is the first table in the @code{EXPLAIN} output which
doesn't use a @code{const} row fetch method).
...
...
@@ -26021,7 +26022,7 @@ algorithm:
@itemize @bullet
@item
Read all rows according to key or by table scanning.
Rows that do
esn't match the WHERE
clause are skipped.
Rows that do
n't match the @code{WHERE}
clause are skipped.
@item
Store the sort-key in a buffer (of size @code{sort_buffer}).
@item
...
...
@@ -26196,11 +26197,11 @@ flush-tables}.
Note that @code{LOAD DATA INFILE} also does the above optimisation if
you insert into an empty table; the main difference with the above
procedure is that you can let
myisamchk
allocate much more temporary
procedure is that you can let
@code{myisamchk}
allocate much more temporary
memory for the index creation that you may want MySQL to allocate for
every index recreation.
Since
@strong{MySQL 4.0}
you can also use
Since
MySQL 4.0
you can also use
@code{ALTER TABLE tbl_name DISABLE KEYS} instead of
@code{myisamchk --keys-used=0 -rq /path/to/db/tbl_name} and
@code{ALTER TABLE tbl_name ENABLE KEYS} instead of
...
...
@@ -26303,8 +26304,8 @@ Always check that all your queries really use the indexes you have created
in the tables. In MySQL you can do this with the @code{EXPLAIN}
command. @xref{EXPLAIN, Explain, Explain, manual}.
@item
Try to avoid complex @code{SELECT} queries on
MyISAM tables that are updated a
lot. This is to avoid problems with table locking.
Try to avoid complex @code{SELECT} queries on
@code{MyISAM} tables that are
updated a
lot. This is to avoid problems with table locking.
@item
The new @code{MyISAM} tables can insert rows in a table without deleted
rows at the same time another table is reading from it. If this is important
...
...
@@ -26312,7 +26313,7 @@ for you, you should consider methods where you don't have to delete rows
or run @code{OPTIMIZE TABLE} after you have deleted a lot of rows.
@item
Use @code{ALTER TABLE ... ORDER BY expr1,expr2...} if you mostly
retrieve rows in
expr1,expr2...
order. By using this option after big
retrieve rows in
@code{expr1,expr2...}
order. By using this option after big
changes to the table, you may be able to get higher performance.
@item
In some cases it may make sense to introduce a column that is 'hashed'
...
...
@@ -26342,7 +26343,8 @@ introduce a new table and update the counter in real time. An update of
type @code{UPDATE table set count=count+1 where index_column=constant}
is very fast!
This is really important when you use databases like MySQL that
This is really important when you use MySQL table types like MyISAM and
ISAM that
only have table locking (multiple readers / single writers). This will
also give better performance with most databases, as the row locking
manager in this case will have less to do.
...
...
@@ -26580,7 +26582,7 @@ As updates on tables normally are considered to be more important than
than statements that retrieve information from a table. This should
ensure that updates are not 'starved' because one issues a lot of heavy
queries against a specific table. (You can change this by using
LOW_PRIORITY
with the statement that does the update or
@code{LOW_PRIORITY}
with the statement that does the update or
@code{HIGH_PRIORITY} with the @code{SELECT} statement.)
Starting from MySQL Version 3.23.7 one can use the
...
...
@@ -26625,7 +26627,7 @@ You can give a specific @code{INSERT}, @code{UPDATE}, or @code{DELETE}
statement lower priority with the @code{LOW_PRIORITY} attribute.
@item
Start @code{mysqld} with a low value for @
strong
{max_write_lock_count} to give
Start @code{mysqld} with a low value for @
code
{max_write_lock_count} to give
@code{READ} locks after a certain number of @code{WRITE} locks.
@item
...
...
@@ -26750,7 +26752,7 @@ having it on all columns by default.
If you don't have any variable-length columns (@code{VARCHAR},
@code{TEXT}, or @code{BLOB} columns), a fixed-size record format is
used. This is faster but unfortunately may waste some space.
@xref{MyISAM table formats}.
@xref{MyISAM table formats
, , @code{MyISAM} table formats
}.
@item
The primary index of a table should be as short as possible. This makes
...
...
@@ -27079,9 +27081,9 @@ MySQL is multi-threaded, so it may have many queries on the same table
simultaneously. To minimise the problem with two threads having
different states on the same file, the table is opened independently by
each concurrent thread. This takes some memory but will normaly increase
performance. Wth
ISAM and MyISAM tables this also requires one extra file
descriptor for the datafile. With these table types the index file
descriptor is shared between all threads.
performance. Wth
@code{ISAM} and @code{MyISAM} tables this also requires
one extra file descriptor for the datafile. With these table types the index
file
descriptor is shared between all threads.
You can read more about this topic in the next section. @xref{Table cache}.
...
...
@@ -27114,7 +27116,7 @@ Make sure that your operating system can handle the number of open file
descriptors implied by the @code{table_cache} setting. If
@code{table_cache} is set too high, MySQL may run out of file
descriptors and refuse connections, fail to perform queries, and be very
unreliable. You also have to take into account that the
MyISAM
table
unreliable. You also have to take into account that the
@code{MyISAM}
table
handler needs two file descriptors for each unique open table. You can
in increase the number of file descriptors available for MySQL with
the @code{--open-files-limit=#} startup option. @xref{Not enough file
...
...
@@ -27139,7 +27141,7 @@ a thread is no longer using a table.
When someone executes @code{mysqladmin refresh} or
@code{mysqladmin flush-tables}.
@item
When someone executes
'FLUSH TABLES'
When someone executes
a @code{FLUSH TABLES} statement.
@end itemize
When the table cache fills up, the server uses the following procedure
...
...
@@ -27491,7 +27493,7 @@ threads on a single processor. With more load/CPUs the difference should
get bigger.
@item
Running with @code{--log-bin} makes
@strong{[MySQL}
1% slower.
Running with @code{--log-bin} makes
MySQL
1% slower.
@item
Compiling on Linux-x86 using gcc without frame pointers
...
...
@@ -27535,8 +27537,8 @@ a query is running, a copy of the current query string is also allocated.
All threads share the same base memory.
@item
Only the compressed
ISAM / MyISAM tables are memory mapped. This
is
because the 32-bit memory space of 4GB is not large enough for most
Only the compressed
@code{ISAM} / @code{MyISAM} tables are memory mapped. Th
is
is
because the 32-bit memory space of 4GB is not large enough for most
big tables. When systems with a 64-bit address space become more
common we may add general support for memory mapping.
...
...
@@ -27551,20 +27553,20 @@ random-read buffer is allocated to avoid disk seeks.
@item
All joins are done in one pass, and most joins can be done without even
using a temporary table. Most temporary tables are memory-based (
HEAP
)
using a temporary table. Most temporary tables are memory-based (
@code{HEAP}
)
tables. Temporary tables with a big record length (calculated as the
sum of all column lengths) or that contain @code{BLOB} columns are
stored on disk.
One problem in MySQL versions before Version 3.23.2 is that if a
HEAP table
exceeds the size of @code{tmp_table_size}, you get the error @code{The
One problem in MySQL versions before Version 3.23.2 is that if a
@code{HEAP}
table
exceeds the size of @code{tmp_table_size}, you get the error @code{The
table tbl_name is full}. In newer versions this is handled by
automatically changing the in-memory (
HEAP
) table to a disk-based
(
MyISAM
) table as necessary. To work around this problem, you can
automatically changing the in-memory (
@code{HEAP}
) table to a disk-based
(
@code{MyISAM}
) table as necessary. To work around this problem, you can
increase the temporary table size by setting the @code{tmp_table_size}
option to @code{mysqld}, or by setting the SQL option
@code{BIG_TABLES} in the client program. @xref{SET OPTION, ,
@code{SET}}. In MySQL Version 3.20, the maximum size of the
@code{SET}
Syntax
}. In MySQL Version 3.20, the maximum size of the
temporary table was @code{record_buffer*16}, so if you are using this
version, you have to increase the value of @code{record_buffer}. You can
also start @code{mysqld} with the @code{--big-tables} option to always
...
...
@@ -33529,7 +33531,7 @@ The given @code{key_string} will be used to crypt @code{string_to_encrypt}.
The return string will be a binary string where the first character
will be @code{CHAR(128 | key_number)}.
The 128 is added to make it easier to recogni
z
e an encrypted key.
The 128 is added to make it easier to recogni
s
e an encrypted key.
If you use a string key, @code{key_number} will be 127.
On error, this function returns @code{NULL}.
...
...
@@ -39798,7 +39800,7 @@ Use less locking: if you can afford a @code{SELECT} to return
data from an old snapshot, do not add the clause
@code{FOR UPDATE} or @code{LOCK IN SHARE MODE} to it.
@item
If nothing helps, seriali
z
e your transactions with table level
If nothing helps, seriali
s
e your transactions with table level
locks: @code{LOCK TABLES t1 WRITE, t2 READ, ... ;
[do something with tables t1 and t2 here]; UNLOCK TABLES.}
Table level locks make you transactions to queue nicely,
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment