Loading BitKeeper/etc/logging_ok +1 −0 Original line number Diff line number Diff line Loading @@ -83,3 +83,4 @@ zak@balfor.local zak@linux.local zgreant@mysql.com tfr@beta.frontier86.ee Administrador@light. Docs/manual.texi +35 −21 Original line number Diff line number Diff line Loading @@ -16051,7 +16051,9 @@ Values in the scope fields may be specified as follows: @itemize @bullet @item The wildcard characters @samp{%} and @samp{_} can be used in the @code{Host} and @code{Db} fields of either table. and @code{Db} fields of either table. If you wish to use for instance a @samp{_} character as part of a database name, specify it as @samp{\_} in the @code{GRANT} command. @item A @code{'%'} @code{Host} value in the @code{db} table means ``any host.'' A Loading Loading @@ -16676,6 +16678,13 @@ database privileges by using @code{ON db_name.*} syntax. If you specify that database. (@strong{Warning}: if you specify @code{ON *} and you @strong{don't} have a current database, you will affect the global privileges!) @strong{Please note}: the @samp{_} and @samp{%} wildcards are allowed when specifying database names in @code{GRANT} commands. This means that if you wish to use for instance a @samp{_} character as part of a database name, you should specify it as @samp{\_} in the @code{GRANT} command, to prevent the user from being able to access additional databases matching the wildcard pattern, e.g., @code{GRANT ... ON `foo\_bar`.* TO ...}. In order to accommodate granting rights to users from arbitrary hosts, MySQL supports specifying the @code{user_name} value in the form @code{user@@host}. If you want to specify a @code{user} string Loading @@ -16684,8 +16693,8 @@ containing special characters or wildcard characters (such as @samp{%}), you can quote the user or host name (for example, @code{'test-user'@@'test-hostname'}). You can specify wildcards in the hostname. For example, @code{user@@"%.loc.gov"} applies to @code{user} for any host in the @code{loc.gov} domain, and @code{user@@"144.155.166.%"} applies to @code{user} @code{user@@'%.loc.gov'} applies to @code{user} for any host in the @code{loc.gov} domain, and @code{user@@'144.155.166.%'} applies to @code{user} for any host in the @code{144.155.166} class C subnet. The simple form @code{user} is a synonym for @code{user@@"%"}. Loading Loading @@ -19931,7 +19940,7 @@ cache. The value of the @code{--bdb-home} option. @item @code{bdb_max_lock} The maximum number of locks (1000 by default) you can have active on a The maximum number of locks (10,000 by default) you can have active on a BDB table. You should increase this if you get errors of type @code{bdb: Lock table is out of available locks} or @code{Got error 12 from ...} when you have do long transactions or when @code{mysqld} has to examine Loading Loading @@ -20030,15 +20039,15 @@ The maximum length of the word to be included in a @code{FULLTEXT} index. @strong{Note: @code{FULLTEXT} indexes must be rebuilt after changing this variable.} (This option is new for MySQL 4.0.) @item @code{ft_max_word_len_sort} @item @code{ft_max_word_len_for_sort} The maximum length of the word in a @code{FULLTEXT} index to be used in fast index recreation method in @code{REPAIR}, @code{CREATE INDEX}, or @code{ALTER TABLE}. Longer words are inserted the slow way. The rule of the thumb is as follows: with @code{ft_max_word_len_sort} increasing, @strong{MySQL} will create bigger @code{ft_max_word_len_for_sort} increasing, @strong{MySQL} will create bigger temporary files (thus slowing the process down, due to disk I/O), and will put fewer keys in one sort block (again, decreasing the efficiency). When @code{ft_max_word_len_sort} is too small, instead, @strong{MySQL} will insert a @code{ft_max_word_len_for_sort} is too small, instead, @strong{MySQL} will insert a lot of words into index the slow way, but short words will be inserted very quickly. Loading Loading @@ -24212,7 +24221,7 @@ ignore, use the directive multiple times, once for each database. You should not use this directive if you are using cross table updates and you don't want these update to be replicated. The main reason for this behavior is that it's hard from the command The main reason for this behaviour is that it's hard from the command alone know if a query should be replicated or not; For example if you are using multi-table-delete or multi-table-update commands in MySQL 4.x that goes across multiple databases. It's also very fast to just check Loading Loading @@ -31231,7 +31240,7 @@ mysql> SELECT IF(STRCMP('test','test1'),'no','yes'); If @code{expr2} or @code{expr3} is explicitely @code{NULL} then the result type of the @code{IF()} function is the type of the not @code{NULL} column. (This behavior is new in MySQL 4.0.3). @code{NULL} column. (This behaviour is new in MySQL 4.0.3). @code{expr1} is evaluated as an integer value, which means that if you are testing floating-point or string values, you should do so using a comparison Loading Loading @@ -35217,6 +35226,9 @@ In other words, you can't access the values of the old row from a @code{REPLACE} statement. In some old MySQL versions it appeared that you could do this, but that was a bug that has been corrected. To be able to use @code{REPLACE} you must have @code{INSERT} and @code{DELETE} privileges for the table. When you use a @code{REPLACE} command, @code{mysql_affected_rows()} will return 2 if the new row replaced an old row. This is because one row was inserted and then the duplicate was deleted. Loading Loading @@ -36604,7 +36616,7 @@ deleted due to duplication of unique key values. The @code{FOREIGN KEY}, @code{CHECK}, and @code{REFERENCES} clauses don't actually do anything, except for InnoDB type tables which support @code{ADD CONSTRAINT FOREIGN KEY (...) REFERENCES ... (...)}. Note that InnoDB does not allow a constraint @code{symbol} or @code{index_name} Note that InnoDB does not allow an @code{index_name} to be specified. @xref{InnoDB}. The syntax for other table types is provided only for compatibility, to make it easier to port code from other SQL servers and to run applications Loading Loading @@ -39257,7 +39269,7 @@ constraints to guard the integrity of your data. The syntax of a foreign key constraint definition in InnoDB: @example FOREIGN KEY (index_col_name, ...) [CONSTRAINT symbol] FOREIGN KEY (index_col_name, ...) REFERENCES table_name (index_col_name, ...) [ON DELETE CASCADE | ON DELETE SET NULL] @end example Loading Loading @@ -39316,7 +39328,7 @@ Starting from version 3.23.50 InnoDB allows you to add a new foreign key constraint to a table through @example ALTER TABLE yourtablename ADD CONSTRAINT FOREIGN KEY (...) REFERENCES anothertablename(...) ADD [CONSTRAINT symbol] FOREIGN KEY (...) REFERENCES anothertablename(...) @end example Remember to create the required indexes first, though. Loading Loading @@ -50830,6 +50842,8 @@ Fixed some @code{ORDER BY ... DESC} problems with InnoDB. Fixed an inadvertently changed option (@code{--ignore-space}) back to the original @code{--ignore-spaces} in @code{mysqlclient}. (Both syntaxes will work). @item Don't require @code{UPDATE} privilege when using @code{REPLACE}. @end itemize @node News-4.0.4, News-4.0.3, News-4.0.5, News-4.0.x Loading Loading @@ -50996,7 +51010,7 @@ that can be used as data values in queries. Changed variable @code{DELAY_KEY_WRITE} to an enum to allow one set @code{DELAY_KEY_WRITE} for all tables without taking down the server. @item Changed behavior of @code{IF(condition,column,NULL)} so that it returns Changed behaviour of @code{IF(condition,column,NULL)} so that it returns the value of the column type. @item Made @code{safe_mysqld} a symlink to @code{mysqld_safe} in binary distribution. Loading Loading @@ -54017,7 +54031,7 @@ T @item Fixed optimiser problem on @code{SELECT} when using many overlapping indexes. MySQL should now be able to choose keys even better when there is many keys to choose from. are many keys to choose from. @item Changed optimiser to prefer a range key instead of a ref key when the range key can uses more columns than the ref key (which only can use Loading Loading @@ -58264,25 +58278,25 @@ Instead of using row level locks one can use application level locks only in well-behaved applications. In many cases one can do an educated guess which locking type is best for the application but generally it's very hard to say that a given for the application, but generally it's very hard to say that a given lock type is better than another; everything depends on the application and different part of the application may require different lock types. Here are some tips about locking in MySQL: On web application most applications do lots of selects, very few deletes, updates mainly on keys and inserts in some specific tables. Most web applications do lots of selects, very few deletes, updates mainly on keys, and inserts in some specific tables. The base MySQL setup is very well tuned for this. Concurrent users is not a problem if one doesn't mix updates and selects that needs to examine many rows in the same table. Concurrent users are not a problem if one doesn't mix updates with selects that need to examine many rows in the same table. If one mixes inserts and deletes on the same table then @code{INSERT DELAYED} may be of great help. One can also use @code{LOCK TABLES} to speed up things (many updates within a single lock is much faster than updates without locks). Splitting thing to different tables will also helps. thing to different tables will also help. If you get speed problems with the table locks in MySQL, you may be able to solve these by converting some of your tables to @code{InnoDB} Loading @@ -58290,7 +58304,7 @@ or @code{BDB} tables. @xref{InnoDB}. @xref{BDB}. The optimisation section in the manual covers a lot of different aspects of how to tune ones application. @xref{Tips}. how to tune applications. @xref{Tips}. @node RTS-threads, Thread packages, Locking methods, Porting VC++Files/client/mysqlclient.dsp +1 −1 Original line number Diff line number Diff line Loading @@ -398,7 +398,7 @@ SOURCE=.\mysys_priv.h # End Source File # Begin Source File SOURCE=..\libmysql\net.c SOURCE=..\sql\net_serv.cpp # End Source File # Begin Source File Loading VC++Files/innobase/innobase.dsp +50 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ CFG=INNOBASE - WIN32 RELEASE !MESSAGE !MESSAGE "innobase - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE "innobase - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "innobase - Win32 nt" (based on "Win32 (x86) Static Library") !MESSAGE "innobase - Win32 Max nt" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project Loading Loading @@ -74,12 +76,60 @@ LIB32=link.exe -lib # ADD BASE LIB32 /nologo /out:"..\lib_release\innodb.lib" # ADD LIB32 /nologo /out:"..\lib_release\innodb.lib" !ELSEIF "$(CFG)" == "innobase - Win32 nt" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "innobase___Win32_nt" # PROP BASE Intermediate_Dir "innobase___Win32_nt" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "innobase___Win32_nt" # PROP Intermediate_Dir "innobase___Win32_nt" # PROP Target_Dir "" # ADD BASE CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../include" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "WIN32" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c # ADD CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../include" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "WIN32" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c # ADD BASE RSC /l 0x416 /d "NDEBUG" # ADD RSC /l 0x416 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo /out:"..\lib_release\innodb.lib" # ADD LIB32 /nologo /out:"..\lib_release\innodb.lib" !ELSEIF "$(CFG)" == "innobase - Win32 Max nt" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "innobase___Win32_Max_nt" # PROP BASE Intermediate_Dir "innobase___Win32_Max_nt" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "innobase___Win32_Max_nt" # PROP Intermediate_Dir "innobase___Win32_Max_nt" # PROP Target_Dir "" # ADD BASE CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../include" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "WIN32" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c # ADD CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../include" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "WIN32" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c # ADD BASE RSC /l 0x416 /d "NDEBUG" # ADD RSC /l 0x416 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo /out:"..\lib_release\innodb.lib" # ADD LIB32 /nologo /out:"..\lib_release\innodb.lib" !ENDIF # Begin Target # Name "innobase - Win32 Debug" # Name "innobase - Win32 Release" # Name "innobase - Win32 nt" # Name "innobase - Win32 Max nt" # Begin Source File SOURCE=.\btr\btr0btr.c Loading VC++Files/libmysql/libmysql.dsp +5 −5 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /G6 /MT /W3 /O2 /I "." /I "..\include" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /FD /c # ADD CPP /nologo /G6 /MT /W3 /O2 /I "." /I "..\include" /I "../zlib" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /FD /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 Loading @@ -59,7 +59,7 @@ LINK32=link.exe # Begin Special Build Tool SOURCE="$(InputPath)" PostBuild_Desc=Move DLL export lib PostBuild_Cmds=xcopy release\libmysql.lib ..\lib_release /v PostBuild_Cmds=xcopy release\libmysql.lib ..\lib_release /y # End Special Build Tool !ELSEIF "$(CFG)" == "libmySQL - Win32 Debug" Loading @@ -76,7 +76,7 @@ PostBuild_Cmds=xcopy release\libmysql.lib ..\lib_release /v # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /G6 /MTd /W3 /Gm /ZI /Od /I "." /I "..\include" /D "_DEBUG" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /FD /c # ADD CPP /nologo /G6 /MTd /W3 /Gm /ZI /Od /I "." /I "..\include" /I "../zlib" /D "_DEBUG" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /FD /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 Loading @@ -92,7 +92,7 @@ LINK32=link.exe # Begin Special Build Tool SOURCE="$(InputPath)" PostBuild_Desc=Move DLL export lib PostBuild_Cmds=xcopy ..\lib_debug\libmysql.dll C:\winnt\system32\ /v xcopy debug\libmysql.lib ..\lib_debug\ /v PostBuild_Cmds=xcopy ..\lib_debug\libmysql.dll C:\winnt\system32\ /y xcopy debug\libmysql.lib ..\lib_debug\ /y # End Special Build Tool !ENDIF Loading Loading @@ -375,7 +375,7 @@ SOURCE=..\client\mysys_priv.h # End Source File # Begin Source File SOURCE=.\net.c SOURCE=..\sql\net_serv.cpp # End Source File # Begin Source File Loading Loading
BitKeeper/etc/logging_ok +1 −0 Original line number Diff line number Diff line Loading @@ -83,3 +83,4 @@ zak@balfor.local zak@linux.local zgreant@mysql.com tfr@beta.frontier86.ee Administrador@light.
Docs/manual.texi +35 −21 Original line number Diff line number Diff line Loading @@ -16051,7 +16051,9 @@ Values in the scope fields may be specified as follows: @itemize @bullet @item The wildcard characters @samp{%} and @samp{_} can be used in the @code{Host} and @code{Db} fields of either table. and @code{Db} fields of either table. If you wish to use for instance a @samp{_} character as part of a database name, specify it as @samp{\_} in the @code{GRANT} command. @item A @code{'%'} @code{Host} value in the @code{db} table means ``any host.'' A Loading Loading @@ -16676,6 +16678,13 @@ database privileges by using @code{ON db_name.*} syntax. If you specify that database. (@strong{Warning}: if you specify @code{ON *} and you @strong{don't} have a current database, you will affect the global privileges!) @strong{Please note}: the @samp{_} and @samp{%} wildcards are allowed when specifying database names in @code{GRANT} commands. This means that if you wish to use for instance a @samp{_} character as part of a database name, you should specify it as @samp{\_} in the @code{GRANT} command, to prevent the user from being able to access additional databases matching the wildcard pattern, e.g., @code{GRANT ... ON `foo\_bar`.* TO ...}. In order to accommodate granting rights to users from arbitrary hosts, MySQL supports specifying the @code{user_name} value in the form @code{user@@host}. If you want to specify a @code{user} string Loading @@ -16684,8 +16693,8 @@ containing special characters or wildcard characters (such as @samp{%}), you can quote the user or host name (for example, @code{'test-user'@@'test-hostname'}). You can specify wildcards in the hostname. For example, @code{user@@"%.loc.gov"} applies to @code{user} for any host in the @code{loc.gov} domain, and @code{user@@"144.155.166.%"} applies to @code{user} @code{user@@'%.loc.gov'} applies to @code{user} for any host in the @code{loc.gov} domain, and @code{user@@'144.155.166.%'} applies to @code{user} for any host in the @code{144.155.166} class C subnet. The simple form @code{user} is a synonym for @code{user@@"%"}. Loading Loading @@ -19931,7 +19940,7 @@ cache. The value of the @code{--bdb-home} option. @item @code{bdb_max_lock} The maximum number of locks (1000 by default) you can have active on a The maximum number of locks (10,000 by default) you can have active on a BDB table. You should increase this if you get errors of type @code{bdb: Lock table is out of available locks} or @code{Got error 12 from ...} when you have do long transactions or when @code{mysqld} has to examine Loading Loading @@ -20030,15 +20039,15 @@ The maximum length of the word to be included in a @code{FULLTEXT} index. @strong{Note: @code{FULLTEXT} indexes must be rebuilt after changing this variable.} (This option is new for MySQL 4.0.) @item @code{ft_max_word_len_sort} @item @code{ft_max_word_len_for_sort} The maximum length of the word in a @code{FULLTEXT} index to be used in fast index recreation method in @code{REPAIR}, @code{CREATE INDEX}, or @code{ALTER TABLE}. Longer words are inserted the slow way. The rule of the thumb is as follows: with @code{ft_max_word_len_sort} increasing, @strong{MySQL} will create bigger @code{ft_max_word_len_for_sort} increasing, @strong{MySQL} will create bigger temporary files (thus slowing the process down, due to disk I/O), and will put fewer keys in one sort block (again, decreasing the efficiency). When @code{ft_max_word_len_sort} is too small, instead, @strong{MySQL} will insert a @code{ft_max_word_len_for_sort} is too small, instead, @strong{MySQL} will insert a lot of words into index the slow way, but short words will be inserted very quickly. Loading Loading @@ -24212,7 +24221,7 @@ ignore, use the directive multiple times, once for each database. You should not use this directive if you are using cross table updates and you don't want these update to be replicated. The main reason for this behavior is that it's hard from the command The main reason for this behaviour is that it's hard from the command alone know if a query should be replicated or not; For example if you are using multi-table-delete or multi-table-update commands in MySQL 4.x that goes across multiple databases. It's also very fast to just check Loading Loading @@ -31231,7 +31240,7 @@ mysql> SELECT IF(STRCMP('test','test1'),'no','yes'); If @code{expr2} or @code{expr3} is explicitely @code{NULL} then the result type of the @code{IF()} function is the type of the not @code{NULL} column. (This behavior is new in MySQL 4.0.3). @code{NULL} column. (This behaviour is new in MySQL 4.0.3). @code{expr1} is evaluated as an integer value, which means that if you are testing floating-point or string values, you should do so using a comparison Loading Loading @@ -35217,6 +35226,9 @@ In other words, you can't access the values of the old row from a @code{REPLACE} statement. In some old MySQL versions it appeared that you could do this, but that was a bug that has been corrected. To be able to use @code{REPLACE} you must have @code{INSERT} and @code{DELETE} privileges for the table. When you use a @code{REPLACE} command, @code{mysql_affected_rows()} will return 2 if the new row replaced an old row. This is because one row was inserted and then the duplicate was deleted. Loading Loading @@ -36604,7 +36616,7 @@ deleted due to duplication of unique key values. The @code{FOREIGN KEY}, @code{CHECK}, and @code{REFERENCES} clauses don't actually do anything, except for InnoDB type tables which support @code{ADD CONSTRAINT FOREIGN KEY (...) REFERENCES ... (...)}. Note that InnoDB does not allow a constraint @code{symbol} or @code{index_name} Note that InnoDB does not allow an @code{index_name} to be specified. @xref{InnoDB}. The syntax for other table types is provided only for compatibility, to make it easier to port code from other SQL servers and to run applications Loading Loading @@ -39257,7 +39269,7 @@ constraints to guard the integrity of your data. The syntax of a foreign key constraint definition in InnoDB: @example FOREIGN KEY (index_col_name, ...) [CONSTRAINT symbol] FOREIGN KEY (index_col_name, ...) REFERENCES table_name (index_col_name, ...) [ON DELETE CASCADE | ON DELETE SET NULL] @end example Loading Loading @@ -39316,7 +39328,7 @@ Starting from version 3.23.50 InnoDB allows you to add a new foreign key constraint to a table through @example ALTER TABLE yourtablename ADD CONSTRAINT FOREIGN KEY (...) REFERENCES anothertablename(...) ADD [CONSTRAINT symbol] FOREIGN KEY (...) REFERENCES anothertablename(...) @end example Remember to create the required indexes first, though. Loading Loading @@ -50830,6 +50842,8 @@ Fixed some @code{ORDER BY ... DESC} problems with InnoDB. Fixed an inadvertently changed option (@code{--ignore-space}) back to the original @code{--ignore-spaces} in @code{mysqlclient}. (Both syntaxes will work). @item Don't require @code{UPDATE} privilege when using @code{REPLACE}. @end itemize @node News-4.0.4, News-4.0.3, News-4.0.5, News-4.0.x Loading Loading @@ -50996,7 +51010,7 @@ that can be used as data values in queries. Changed variable @code{DELAY_KEY_WRITE} to an enum to allow one set @code{DELAY_KEY_WRITE} for all tables without taking down the server. @item Changed behavior of @code{IF(condition,column,NULL)} so that it returns Changed behaviour of @code{IF(condition,column,NULL)} so that it returns the value of the column type. @item Made @code{safe_mysqld} a symlink to @code{mysqld_safe} in binary distribution. Loading Loading @@ -54017,7 +54031,7 @@ T @item Fixed optimiser problem on @code{SELECT} when using many overlapping indexes. MySQL should now be able to choose keys even better when there is many keys to choose from. are many keys to choose from. @item Changed optimiser to prefer a range key instead of a ref key when the range key can uses more columns than the ref key (which only can use Loading Loading @@ -58264,25 +58278,25 @@ Instead of using row level locks one can use application level locks only in well-behaved applications. In many cases one can do an educated guess which locking type is best for the application but generally it's very hard to say that a given for the application, but generally it's very hard to say that a given lock type is better than another; everything depends on the application and different part of the application may require different lock types. Here are some tips about locking in MySQL: On web application most applications do lots of selects, very few deletes, updates mainly on keys and inserts in some specific tables. Most web applications do lots of selects, very few deletes, updates mainly on keys, and inserts in some specific tables. The base MySQL setup is very well tuned for this. Concurrent users is not a problem if one doesn't mix updates and selects that needs to examine many rows in the same table. Concurrent users are not a problem if one doesn't mix updates with selects that need to examine many rows in the same table. If one mixes inserts and deletes on the same table then @code{INSERT DELAYED} may be of great help. One can also use @code{LOCK TABLES} to speed up things (many updates within a single lock is much faster than updates without locks). Splitting thing to different tables will also helps. thing to different tables will also help. If you get speed problems with the table locks in MySQL, you may be able to solve these by converting some of your tables to @code{InnoDB} Loading @@ -58290,7 +58304,7 @@ or @code{BDB} tables. @xref{InnoDB}. @xref{BDB}. The optimisation section in the manual covers a lot of different aspects of how to tune ones application. @xref{Tips}. how to tune applications. @xref{Tips}. @node RTS-threads, Thread packages, Locking methods, Porting
VC++Files/client/mysqlclient.dsp +1 −1 Original line number Diff line number Diff line Loading @@ -398,7 +398,7 @@ SOURCE=.\mysys_priv.h # End Source File # Begin Source File SOURCE=..\libmysql\net.c SOURCE=..\sql\net_serv.cpp # End Source File # Begin Source File Loading
VC++Files/innobase/innobase.dsp +50 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ CFG=INNOBASE - WIN32 RELEASE !MESSAGE !MESSAGE "innobase - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE "innobase - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "innobase - Win32 nt" (based on "Win32 (x86) Static Library") !MESSAGE "innobase - Win32 Max nt" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project Loading Loading @@ -74,12 +76,60 @@ LIB32=link.exe -lib # ADD BASE LIB32 /nologo /out:"..\lib_release\innodb.lib" # ADD LIB32 /nologo /out:"..\lib_release\innodb.lib" !ELSEIF "$(CFG)" == "innobase - Win32 nt" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "innobase___Win32_nt" # PROP BASE Intermediate_Dir "innobase___Win32_nt" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "innobase___Win32_nt" # PROP Intermediate_Dir "innobase___Win32_nt" # PROP Target_Dir "" # ADD BASE CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../include" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "WIN32" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c # ADD CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../include" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "WIN32" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c # ADD BASE RSC /l 0x416 /d "NDEBUG" # ADD RSC /l 0x416 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo /out:"..\lib_release\innodb.lib" # ADD LIB32 /nologo /out:"..\lib_release\innodb.lib" !ELSEIF "$(CFG)" == "innobase - Win32 Max nt" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "innobase___Win32_Max_nt" # PROP BASE Intermediate_Dir "innobase___Win32_Max_nt" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "innobase___Win32_Max_nt" # PROP Intermediate_Dir "innobase___Win32_Max_nt" # PROP Target_Dir "" # ADD BASE CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../include" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "WIN32" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c # ADD CPP /nologo /G6 /MT /W3 /GX /O2 /I "../innobase/include" /I "../include" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "WIN32" /D "_MBCS" /D "MYSQL_SERVER" /YX /FD /c # ADD BASE RSC /l 0x416 /d "NDEBUG" # ADD RSC /l 0x416 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo /out:"..\lib_release\innodb.lib" # ADD LIB32 /nologo /out:"..\lib_release\innodb.lib" !ENDIF # Begin Target # Name "innobase - Win32 Debug" # Name "innobase - Win32 Release" # Name "innobase - Win32 nt" # Name "innobase - Win32 Max nt" # Begin Source File SOURCE=.\btr\btr0btr.c Loading
VC++Files/libmysql/libmysql.dsp +5 −5 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /G6 /MT /W3 /O2 /I "." /I "..\include" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /FD /c # ADD CPP /nologo /G6 /MT /W3 /O2 /I "." /I "..\include" /I "../zlib" /D "NDEBUG" /D "DBUG_OFF" /D "_WINDOWS" /D "USE_TLS" /FD /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 Loading @@ -59,7 +59,7 @@ LINK32=link.exe # Begin Special Build Tool SOURCE="$(InputPath)" PostBuild_Desc=Move DLL export lib PostBuild_Cmds=xcopy release\libmysql.lib ..\lib_release /v PostBuild_Cmds=xcopy release\libmysql.lib ..\lib_release /y # End Special Build Tool !ELSEIF "$(CFG)" == "libmySQL - Win32 Debug" Loading @@ -76,7 +76,7 @@ PostBuild_Cmds=xcopy release\libmysql.lib ..\lib_release /v # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /G6 /MTd /W3 /Gm /ZI /Od /I "." /I "..\include" /D "_DEBUG" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /FD /c # ADD CPP /nologo /G6 /MTd /W3 /Gm /ZI /Od /I "." /I "..\include" /I "../zlib" /D "_DEBUG" /D "_WINDOWS" /D "SAFE_MUTEX" /D "USE_TLS" /FD /c # SUBTRACT CPP /YX # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 Loading @@ -92,7 +92,7 @@ LINK32=link.exe # Begin Special Build Tool SOURCE="$(InputPath)" PostBuild_Desc=Move DLL export lib PostBuild_Cmds=xcopy ..\lib_debug\libmysql.dll C:\winnt\system32\ /v xcopy debug\libmysql.lib ..\lib_debug\ /v PostBuild_Cmds=xcopy ..\lib_debug\libmysql.dll C:\winnt\system32\ /y xcopy debug\libmysql.lib ..\lib_debug\ /y # End Special Build Tool !ENDIF Loading Loading @@ -375,7 +375,7 @@ SOURCE=..\client\mysys_priv.h # End Source File # Begin Source File SOURCE=.\net.c SOURCE=..\sql\net_serv.cpp # End Source File # Begin Source File Loading