<< ·µ»ØÔÚÏ߽̳Ì

MySQLѧϰ±Ê¼Ç

ÕûÀí£ºJims of ·Ê·ÊÊÀ¼Ò

·¢²¼Ê±¼ä: 2004Äê11ÔÂ06ÈÕ

×î½ü¸üÐÂ: 2005Äê01ÔÂ12ÈÕ


Table of Contents

1. MySQLÊý¾Ý¿âµÄÊý¾Ý
1.1. Êý¾ÝÖµÀàÐÍ(data type)
1.1.1. ÊýÖµ
1.1.2. ×Ö·û´®
1.1.3. ÈÕÆÚºÍʱ¼ä
1.2. ÁÐÀàÐÍ(column type)
1.2.1. ÊýÖµÀàµÄÊý¾ÝÁÐÀàÐÍ
1.2.2. ×Ö·û´®ÀàÊý¾ÝÁÐÀàÐÍ
1.2.3. ÈÕÆÚ,ʱ¼äÐÍÊý¾ÝÁÐÀàÐÍ
1.3. Ψһ±àºÅ
1.4. ×Ö·û¼¯Ö§³Ö
1.4.1. MySQL4.1ÒÔǰ°æ±¾
1.4.2. MySQL4.1ÒÔºó°æ±¾
1.4.3. ¸÷¼¶×Ö·û¼¯µÄ²éѯ·½·¨
1.4.4. UnicodeÖ§³Ö
1.5. ÈçºÎÑ¡ÔñÊý¾ÝÁÐÀàÐÍ£¿
1.6. ±í´ïʽ²Ù×÷·û
1.7. ÀàÐÍת»»
2. ²éѯÓÅ»¯
2.1. Ë÷Òý
2.2. ²éѯÓÅ»¯³ÌÐò
2.3. Êý¾ÝÁÐÀàÐÍÓë²éѯЧÂÊ
2.4. ÓÐЧµØ¼ÓÔØÊý¾Ý
2.5. µ÷¶ÈºÍËø¶¨
2.6. ·þÎñÆ÷ÓÅ»¯
2.7. Ó²¼þÓÅ»¯
3. Êý¾Ý¿â¹ÜÀí
3.1. Êý¾ÝĿ¼
3.2. MySQLÊý¾Ý±íÔÚϵͳÖбíÏÖÐÎʽ
3.3. Êý¾Ý±í×î´ó³ß´çÏÞÖÆ
3.4. ״̬ÎļþºÍÈÕÖ¾Îļþ
3.5. µ÷ÕûMySQLÊý¾ÝĿ¼λÖÃ
4. MySQLÊý¾Ý¿âÈÕ³£¹ÜÀí
4.1. Êý¾Ý¿â°²È«¹ÜÀí
4.2. ·þÎñÆ÷µÄÆô¶¯ºÍ¹Ø±Õ
4.3. Á¬½Ó¹ÊÕϻָ´
4.4. MySQLÓû§ÕʺŹÜÀí
4.5. ÈÕÖ¾Îļþ¹ÜÀí
4.5.1. ÈÕ־ʧЧ´¦Àí
4.6. MySQL·þÎñÆ÷µÄһЩÓÅ»¯ÅäÖÃ
4.7. ÓÅ»¯·þÎñÆ÷
4.8. ÔËÐжà¸öMySQL·þÎñÆ÷
4.9. MySQL·þÎñÆ÷¾µÏñÅäÖÃ
5. Êý¾Ý¿â°²È«
5.1. ±£»¤MySQL°²×°³ÌÐòÎļþ
5.2. ȨÏÞ±í
5.3. ½¨Á¢¼ÓÃÜÁ¬½Ó
6. Êý¾Ý¿âµÄ±¸·Ý¡¢Î¬»¤ºÍÐÞ¸´
6.1. ¼ì²é/ÐÞ¸´Êý¾Ý±í
6.2. ±¸·ÝÊý¾Ý¿â
6.3. ʹÓñ¸·Ý»Ö¸´Êý¾Ý
7. MySQL³ÌÐò½éÉÜ
8. MySQL How-To
8.1. Á¬½ÓÊý¾Ý¿â·þÎñÆ÷
8.2. ¸üÐÂÓû§ÃÜÂë
8.3. MySQL¶ÁÈ¡ÅäÖÃÎļþµÄ˳Ðò
8.4. ÖØÉèÖÃMySQL¹ÜÀíÔ±ÃÜÂëµÄ·½·¨
8.5. NULLÖµ
8.6. ʹÓÃSQL±äÁ¿
8.7. ¸Ä±äĬÈÏÌáʾ·û
8.8. ·ÇÓÅ»¯µÄÈ«Êý¾Ý±íDELETE²Ù×÷
8.9. MySQLÊÂÎñ´¦ÀíʾÀý

List of Tables

1.1. תÒåÐòÁÐ
1.2. ÊýÖµÀàÊý¾ÝÁÐÀàÐÍ
1.3. ×Ö·û´®ÀàÊý¾ÝÁÐÀàÐÍ
1.4. ÈÕÆÚ£¬Ê±¼äÀàÐÍÁÐ
1.5. ËãÊõ²Ù×÷·û
1.6. Âß¼­²Ù×÷·û
1.7. λ²Ù×÷·û
1.8. ±È½Ï²Ù×÷·û
1.9. ²Ù×÷·ûÓÅÏȼ¶(ÓɸßÖÁµÍÅÅÁÐ)
3.1. ״̬ÎļþºÍÈÕÖ¾Îļþ
3.2. MySQLÊý¾ÝĿ¼¼°Ä¿Â¼ÖÐÎļþλÖõĵ÷Õû·½·¨
4.1. ·ÃÎÊȨÏÞ±í
4.2. ȨÏÞ×÷Ó÷¶Î§(ÓÉON×Ó¾äÉèÖÃ)
4.3. ÈÕÖ¾Æô¶¯Ñ¡Ïî
4.4. BDBºÍInnoDBÊý¾Ý±íÈÕ־ѡÏî

Chapter 1. MySQLÊý¾Ý¿âµÄÊý¾Ý

MySQLÊý¾Ý¿âÊÇÓÉÊý¾Ý×é³ÉµÄ£¬ÎªÁËÄÜ·½±ã¹ÜÀíºÍʹÓÃÕâЩÊý¾Ý£¬ÎÒÃǰÑÕâЩÊý¾Ý½øÐзÖÀ࣬Ðγɸ÷ÖÖÊý¾ÝÀàÐÍ£¬ÓÐÊý¾ÝÖµµÄÀàÐÍ£¬ÓбíÖÐÊý¾ÝÁеÄÀàÐÍ£¬ÓÐÊý¾Ý±íµÄÀàÐÍ¡£Àí½âMySQLµÄÕâЩÊý¾ÝÀàÐÍÄÜʹÎÒÃǸüºÃµØÊ¹ÓÃMySQLÊý¾Ý¿â¡£ÏÂÃæ¶Ô¸÷ÖÖÊý¾ÝÀàÐͽøÐмòµ¥µÄ½éÉÜ¡£

1.1. Êý¾ÝÖµÀàÐÍ(data type)

¶ÔMySQLÖÐÊý¾ÝÖµµÄ·ÖÀ࣬ÓÐÊýÖµÐÍ¡¢×Ö·ûÐÍ¡¢ÈÕÆÚÐͺͿÕÖµµÈ£¬ÕâºÍÒ»°ãµÄ±à³ÌÓïÑԵķÖÀà²î²»¶à¡£

1.1.1. ÊýÖµ

MySQLÖеÄÊýÖµ·ÖÕûÐͺ͸¡µãÐÍÁ½ÖÖ¡£MySQLÖ§³Ö¿ÆÑ§¼ÇÊý·¨¡£ÕûÐÍ¿ÉÒÔÊÇÊ®½øÖÆ£¬Ò²¿ÉÊÇÊ®Áù½øÖÆÊý¡£

1.1.2. ×Ö·û´®

MySQLÖ§³ÖÒÔµ¥»òË«ÒýºÅ°üΧµÄ×Ö·ûÐòÁС£Èç¡°MySQL tutorial¡±¡¢¡®Mysql Database¡¯¡£

MySQLÄÜʶ±ð×Ö·û´®ÖеÄתÒåÐòÁУ¬×ªÒåÐòÁÐÓ÷´Ð±¸Ü(\)±íʾ¡£ÏÂÃæÊÇÒ»¸öתÒåÐòÁÐÁÐ±í¡£

Table 1.1. תÒåÐòÁÐ

תÒåÐòÁк¬Òå
\0NUL(ASCIIµÄ0Öµ)
\'µ¥ÒýºÅ
\"Ë«ÒýºÅ
\bºóÍË·û
\n»»Ðзû
\r»Ø³µ·û
\tÖÆ±í·û
\\·´Ð±¸Ü
\ZCtrl+Z

Èç¹û×Ö·û´®±¾Éí°üº¬Óе¥Ë«ÒýºÅ£¬ÔòÓÃÒÔÏÂÈýÖÖ·½·¨ÖеÄÒ»ÖÖÀ´±íʾ£º

  • ×Ö·û´®µÄÒýºÅºÍ×Ö·û´®Á½¶ËµÄÒýºÅ˫ͬ£¬Ôò˫д¸ÃÒýºÅ¡£È磺'mysql''s test'¡£

  • ÓÃÓë×Ö·û´®µÄÒýºÅ²»Í¬µÄÒýºÅ°Ñ×Ö·û´®ÒýÆðÀ´£¬È磺"mysql's test"¡£

  • Ó÷´Ð±¸ÜתÒåÒýºÅ£¬È磺"mysql\' test"£¬'mysql\' test'¡£ÕâÑù¾Í²»ÓÃÀí»á×Ö·û´®Á½¶ËµÄÊǵ¥ÒýºÅ»¹ÊÇË«ÒýºÅÁË¡£

×Ö·û´®¿ÉÓÉÒ»¸öÊ®Áù½øÖÆÊý±íʾ£¬Èç0x61±íʾ×Ö·û"a"¡£ÓÉMySQL 4.0¿ªÊ¼£¬×Ö·û´®ÖµÒ²¿ÉÓÃANSI SQL±íʾ·¨X'val'À´±íʾ¡£ÈçX'61'±íʾ×Ö·û"a"¡£

´ÓMySQL 4.1¿ªÊ¼£¬¿ÉÒÔΪ×Ö·û´®Öµ×¨ÃÅÖ¸¶¨Ò»¸ö×Ö·û¼¯¡£

1.1.3. ÈÕÆÚºÍʱ¼ä

MySQLĬÈϰ´¡°Äê-ÔÂ-ÈÕ¡±µÄ˳ÐòÏÔʾÈÕÆÚ¡£

1.2. ÁÐÀàÐÍ(column type)

MySQLÊý¾Ý¿âµÄ±íÊÇÒ»¸ö¶þά±í£¬ÓÉÒ»¸ö»ò¶à¸öÊý¾ÝÁй¹³É¡£Ã¿¸öÊý¾ÝÁж¼ÓÐËüµÄÌØ¶¨ÀàÐÍ£¬¸ÃÀàÐ;ö¶¨ÁËMySQLÈçºÎ¿´´ý¸ÃÁÐÊý¾Ý£¬ÎÒÃÇ¿ÉÒÔ°ÑÕûÐÍÊýÖµ´æ·Åµ½×Ö·ûÀàÐ͵ÄÁÐÖУ¬MySQLÔò»á°ÑËü¿´³É×Ö·û´®À´´¦Àí¡£MySQLÖеÄÁÐÀàÐÍÓÐÈýÖÖ£ºÊýÖµÀà¡¢×Ö·û´®ÀàºÍÈÕÆÚ/ʱ¼äÀà¡£´Ó´óÀàÀ´¿´ÁÐÀàÐͺÍÊýÖµÀàÐÍÒ»Ñù£¬¶¼ÊÇÖ»ÓÐÈýÖÖ¡£µ«Ã¿ÖÖÁÐÀàÐͶ¼»¹¿Éϸ·Ö¡£ÏÂÃæ¶Ô¸÷ÖÖÁÐÀàÐͽøÐÐÏêϸ½éÉÜ¡£

1.2.1. ÊýÖµÀàµÄÊý¾ÝÁÐÀàÐÍ

ÊýÖµÐ͵ÄÁÐÀàÐͰüÀ¨ÕûÐͺ͸¡µãÐÍÁ½´óÀà¡£

Table 1.2. ÊýÖµÀàÊý¾ÝÁÐÀàÐÍ

Êý¾ÝÁÐÀàÐÍ´æ´¢¿Õ¼äÃèÊö
TINYINT1×ֽڷdz£Ð¡µÄÕýÕûÊý£¬´ø·ûºÅ£º-128~127£¬²»´ø·ûºÅ£º0~255
SMALLINT2×Ö½ÚСÕûÊý£¬´ø·ûºÅ£º-32768~32767£¬²»´ø·ûºÅ£º0~65535
MEDIUMINT3×Ö½ÚÖеȴóСµÄÕûÊý£¬´ø·ûºÅ£º-8388608~8388607£¬²»´ø·ûºÅ£º0~16777215
INT4×Ö½Ú±ê×¼ÕûÊý£¬´ø·ûºÅ£º-2147483648~2147483647£¬²»´ø·ûºÅ£º0~4294967295
BIGINT8×Ö½Ú´óÕûÊý£¬´ø·ûºÅ£º-9223372036854775808~9233372036854775807£¬²»´ø·ûºÅ£º0~18446744073709551615
FLOAT4×Ö½Úµ¥¾«¶È¸¡µãÊý£¬×îС·ÇÁãÖµ£º+-1.175494351E-38£¬×î´ó·ÇÁãÖµ£º+-3.402823466E+38
DOUBLE8×Ö½ÚË«¾«¶È¸¡µãÊý£¬×îС·ÇÁãÖµ£º+-2.2250738585072014E-308£¬×î´ó·ÇÁãÖµ£º+-1.7976931348623157E+308
DECIMALM+2×Ö½ÚÒÔ×Ö·û´®ÐÎʽ±íʾµÄ¸¡µãÊý£¬ËüµÄȡֵ·¶Î§¿É±ä£¬ÓÉMºÍDµÄÖµ¾ö¶¨¡£

1.2.1.1. ÕûÐÍÊý¾ÝÁÐÀàÐÍ

MySQLÓÐÎåÖÖÕûÐÍÊý¾ÝÁÐÀàÐÍ£¬¼´TINYINT£¬SMALLINT£¬MEDIUMINT£¬INTºÍBIGINT¡£ËüÃÇÖ®¼äµÄÇø±ðÊÇȡֵ·¶Î§²»Í¬£¬´æ´¢¿Õ¼äÒ²¸÷²»Ïàͬ¡£ÔÚÕûÐÍÊý¾ÝÁкó¼ÓÉÏUNSIGNEDÊôÐÔ¿ÉÒÔ½ûÖ¹¸ºÊý£¬È¡Öµ´Ó0¿ªÊ¼¡£

ÉùÃ÷ÕûÐÍÊý¾ÝÁÐʱ£¬ÎÒÃÇ¿ÉÒÔΪËüÖ¸¶¨¸öÏÔʾ¿í¶ÈM(1~255)£¬ÈçINT(5)£¬Ö¸¶¨ÏÔʾ¿í¶ÈΪ5¸ö×Ö·û,Èç¹ûûÓиøËüÖ¸¶¨ÏÔʾ¿í¶È£¬MySQL»áΪËüÖ¸¶¨Ò»¸öĬÈÏÖµ¡£ÏÔʾ¿í¶ÈÖ»ÓÃÓÚÏÔʾ£¬²¢²»ÄÜÏÞÖÆÈ¡Öµ·¶Î§ºÍÕ¼Óÿռ䣬È磺INT(3)»áÕ¼ÓÃ4¸ö×ֽڵĴ洢¿Õ¼ä£¬²¢ÇÒÔÊÐíµÄ×î´óÖµÒ²²»»áÊÇ999,¶øÊÇINTÕûÐÍËùÔÊÐíµÄ×î´óÖµ¡£

1.2.1.2. ¸¡µãÐÍÊý¾ÝÁÐÀàÐÍ

MySQLÓÐÈýÖÖ¸¡µãÐÍÊý¾ÝÁÐÀàÐÍ£¬·Ö±ðÊÇ£ºFLOAT£¬DOUBLEºÍDECIMAL¡£¸¡µãÀàÊý¾ÝÀàÐÍÓÐÒ»¸ö×î´ó¿É±íʾֵºÍÒ»¸ö×îС·ÇÁã¿É±íʾֵ£¬×îС·ÇÁã¿É±íʾֵ¾ö¶¨Á˸ÃÀàÐ͵ľ«È·¶È¡£

MySQL 4.0.2°æÖ®ºó£¬FLOATºÍDOUBLE¶¼¿ÉÒÔÖ¸¶¨UNSIGNEDÊôÐÔ¡£µ±Ö¸¶¨¸ÃÊôÐÔʱ£¬È¡Öµ·¶Î§²»Æ½ÒƵ½ÕýÊýÇø¼ä£¬¶øÖ»ÊǼòµ¥µØ°Ñ¸¡µãÀàÐ͵ĸºÊý²¿·ÝÈ¥µô¡£

¸¡µãÀàÐÍÒ²ÓÐM(1~255)ºÍD(1~30£¬ÇÒ²»ÄÜ´óÓÚM-2)¡£·Ö±ð±íʾÏÔʾ¿í¶ÈºÍСÊýλÊý¡£MºÍDÔÚFLOATºÍDOUBLEÖÐÊÇ¿ÉÑ¡µÄ£¬Ä¬ÈÏ£¬µ±MySQL°æ±¾´óÓÚ3.23.6ʱ£¬FLOATºÍDOUBLEÀàÐͽ«±»±£´æÎªÓ²¼þËùÖ§³ÖµÄ×î´ó¾«¶È¡£DECIMALµÄMºÍDÖµÔÚMySQL3.23.6ºó¿ÉÑ¡£¬Ä¬ÈÏDֵΪ0,MֵΪ10¡£

1.2.1.3. ÈçºÎÑ¡ÔñÊýÖµÀàÊý¾ÝÁÐÀàÐÍ£¿

ΪÁ˽ÚÊ¡´æ´¢¿Õ¼äºÍÌá¸ßÊý¾Ý¿â´¦ÀíЧÂÊ£¬ÎÒÃÇÓ¦¸ù¾ÝÓ¦ÓÃÊý¾ÝµÄȡֵ·¶Î§À´Ñ¡ÔñÒ»¸ö×îÊʺϵÄÊý¾ÝÁÐÀàÐÍ¡£Èç¹û°ÑÒ»¸ö³¬³öÊý¾ÝÁÐȡֵ·¶Î§µÄÊý´æÈë¸ÃÁУ¬ÔòMySQL¾Í»á½Ø¶Ì¸ÃÖµ£¬È磺ÎÒÃǰÑ99999´æÈëSMALLINT(3)Êý¾ÝÁÐÀÒòΪSMALLINT(3)µÄȡֵ·¶Î§ÊÇ-32768~32767£¬ËùÒԾͻᱻ½Ø¶Ì³É32767´æ´¢¡£ÏÔʾ¿í¶È3²»»áÓ°ÏìÊýÖµµÄ´æ´¢¡£Ö»Ó°ÏìÏÔʾ¡£

¶ÔÓÚ¸¡µãÊý¾ÝÁУ¬´æÈëµÄÊýÖµ»á±»¸ÃÁж¨ÒåµÄСÊýλ½øÐÐËÄÉáÎåÈë¡£Èç°ÑÒ»¸ö1.234´æÈëFLOAT(6.1)Êý¾ÝÁÐÖУ¬½á¹ûÊÇ1.2¡£

DECIMALÓëFLOATºÍDOUBLEµÄÇø±ðÊÇ£ºDECIMALÀàÐ͵ÄÖµÊÇÒÔ×Ö·û´®µÄÐÎʽ±»´¢´æÆðÀ´µÄ£¬ËüµÄСÊýλÊýÊǹ̶¨µÄ¡£ËüµÄÓŵãÊÇ£¬²»»áÏóFLOATºÍDOUBLEÀàÐÍÊý¾ÝÁÐÄÇÑù½øÐÐËÄÉáÎåÈë¶ø²úÉúÎó²î£¬ËùÒÔºÜÊʺÏÓÃÓÚ²ÆÎñ¼ÆË㣻¶øËüµÄȱµãÊÇ£ºÓÉÓÚËüµÄ´æ´¢¸ñʽ²»Í¬£¬CPU²»ÄܶÔËü½øÐÐÖ±½ÓÔËË㣬´Ó¶øÓ°ÏìÔËËãЧÂÊ¡£DECIMAL(M£¬D)×ܹ²ÒªÕ¼ÓÃM+2¸ö×Ö½Ú¡£

1.2.1.4. ÊýÖµÀàÊý¾ÝÁеÄÊôÐÔ

  • ZEROFILLÊôÐÔÊÊÓÃÓÚËùÓÐÊýÖµÀàÊý¾ÝÁÐÀàÐÍ£¬×÷ÓÃÊÇ£¬Èç¹ûÊýÖµµÄ¿í¶ÈСÓÚ¶¨ÒåµÄÏÔʾ¿í¶È£¬ÔòÔÚÊýֵǰÌî³ä0¡£

  • UNSIGNEDÊôÐÔ²»ÔÊÐíÊý¾ÝÁгöÏÖ¸ºÊý¡£

  • AUTO_INCREMENTÊôÐÔ¿ÉÉú³É¶ÀÒ»ÎÞ¶þµÄÊý×ÖÐòÁС£Ö»¶ÔÕûÊýÀàµÄÊý¾ÝÁÐÓÐЧ¡£

  • NULLºÍNOT NULLÊôÐÔÉèÖÃÊý¾ÝÁÐÊÇ·ñ¿ÉΪ¿Õ¡£

  • DEFAULTÊôÐÔ¿ÉΪÊý¾ÝÁÐÖ¸¶¨Ä¬ÈÏÖµ¡£

1.2.2. ×Ö·û´®ÀàÊý¾ÝÁÐÀàÐÍ

×Ö·û´®¿ÉÒÔÓÃÀ´±íʾÈκÎÒ»ÖÖÖµ£¬ËùÒÔËüÊÇ×î»ù±¾µÄÀàÐÍÖ®Ò»¡£ÎÒÃÇ¿ÉÒÔÓÃ×Ö·û´®ÀàÐÍÀ´´æ´¢Í¼Ïó»òÉùÒôÖ®ÀàµÄ¶þ½øÖÆÊý¾Ý£¬Ò²¿É´æ´¢ÓÃgzipѹËõµÄÊý¾Ý¡£Ï±í½éÉÜÁ˸÷ÖÖ×Ö·û´®ÀàÐÍ£º

Table 1.3. ×Ö·û´®ÀàÊý¾ÝÁÐÀàÐÍ

ÀàÐÍ×î´ó³¤¶ÈÕ¼Óô洢¿Õ¼ä
CHAR[(M)]M×Ö½ÚM×Ö½Ú
VARCHAR[(M)]M×Ö½ÚL+1×Ö½Ú
TINYBLOD£¬TINYTEXT2^8-1×Ö½ÚL+1×Ö½Ú
BLOB£¬TEXT2^16-1×Ö½ÚL+2
MEDIUMBLOB£¬MEDIUMTEXT2^24-1×Ö½ÚL+3
LONGBLOB£¬LONGTEXT2^32-1×Ö½ÚL+4
ENUM('value1','value2',...)65535¸ö³ÉÔ±1»ò2×Ö½Ú
SET('value1','value2',...)64¸ö³ÉÔ±1,2,3,4»ò8×Ö½Ú

L+1¡¢L+2ÊDZíʾÊý¾ÝÁÐÊǿɱ䳤¶ÈµÄ£¬ËüÕ¼ÓõĿռä»á¸ù¾ÝÊý¾ÝÐеÄÔö¼õÃæÔò¸Ä±ä¡£Êý¾ÝÐеÄ×ܳ¤¶ÈÈ¡¾öÓÚ´æ·ÅÔÚÕâЩÊý¾ÝÁÐÀïµÄÊý¾ÝÖµµÄ³¤¶È¡£L+1»òL+2Àï¶à³öÀ´µÄ×Ö½ÚÊÇÓÃÀ´±£´æÊý¾ÝÖµµÄ³¤¶ÈµÄ¡£ÔÚ¶Ô³¤¶È¿É±äµÄÊý¾Ý½øÐд¦Àíʱ£¬MySQLÒª°ÑÊý¾ÝÄÚÈݺÍÊý¾Ý³¤¶È¶¼±£´æÆðÀ´¡£

Èç¹û°Ñ³¬³ö×Ö·û´®×î´ó³¤¶ÈµÄÊý¾Ý·Åµ½×Ö·ûÀàÊý¾ÝÁÐÖУ¬MySQL»á×Ô¶¯½øÐнض̴¦Àí¡£

ENUMºÍSETÀàÐ͵ÄÊý¾ÝÁж¨ÒåÀïÓÐÒ»¸öÁÐ±í£¬ÁбíÀïµÄÔªËØ¾ÍÊǸÃÊý¾ÝÁеĺϷ¨È¡Öµ¡£Èç¹ûÊÔͼ°ÑÒ»¸öûÓÐÔÚÁбíÀïµÄÖµ·Åµ½Êý¾ÝÁÐÀËü»á±»×ª»»Îª¿Õ×Ö·û´®(¡°¡±)¡£

×Ö·û´®ÀàÐ͵ÄÖµ±»±£´æÎªÒ»×éÁ¬ÐøµÄ×Ö½ÚÐòÁУ¬²¢»á¸ù¾ÝËüÃÇÈÝÄɵÄÊǶþ½øÖÆ×Ö·û´®»¹ÊǷǶþ½øÖÆ×Ö·û¶ø±»Çø±ð¶Ô´ýΪ×Ö½Ú»òÕß×Ö·û£º

  • ¶þ½øÖÆ×Ö·û´®±»ÊÓΪһ¸öÁ¬ÐøµÄ×Ö½ÚÐòÁУ¬Óë×Ö·û¼¯Î޹ء£MySQL°ÑBLOBÊý¾ÝÁкʹøBINARYÊôÐÔµÄCHARºÍVARCHARÊý¾ÝÁÐÀïµÄÊý¾Ýµ±×÷¶þ½øÖÆÖµ¡£

  • ·Ç¶þ½øÖÆ×Ö·û´®±»ÊÓΪһ¸öÁ¬ÐøÅÅÁеÄ×Ö·ûÐòÁС£Óë×Ö·û¼¯Óйء£MySQL°ÑTEXTÁÐÓë²»´øBINARYÊôÐÔµÄCHARºÍVARCHARÊý¾ÝÁÐÀïµÄÊý¾Ýµ±×÷¶þ½øÖÆÖµ¶Ô´ý¡£

ÔÚMySQL4.1ÒÔºóµÄ°æ±¾ÖУ¬²»Í¬µÄÊý¾ÝÁпÉÒÔʹÓò»Í¬µÄ×Ö·û¼¯¡£ÔÚMySQL4.1°æ±¾ÒÔǰ£¬MySQLÓ÷þÎñÆ÷µÄ×Ö·û¼¯×÷ΪĬÈÏ×Ö·û¼¯¡£

·Ç¶þ½øÖÆ×Ö·û´®£¬¼´ÎÒÃÇͨ³£Ëù˵µÄ×Ö·û´®£¬Êǰ´×Ö·ûÔÚ×Ö·û¼¯ÖÐÏȺó´ÎÐò½øÐбȽϺÍÅÅÐòµÄ¡£¶ø¶þ½øÖÆ×Ö·û´®ÒòΪÓë×Ö·û¼¯Î޹أ¬ËùÒÔ²»ÒÔ×Ö·û˳ÐòÅÅÐò£¬¶øÊÇÒÔ×ֽڵĶþ½øÖÆÖµ×÷Ϊ±È½ÏºÍÅÅÐòµÄÒÀ¾Ý¡£ÏÂÃæ½éÉÜÁ½ÖÖ×Ö·û´®µÄ±È½Ï·½Ê½£º

  • ¶þ½øÖÆ×Ö·û´®µÄ±È½Ï·½Ê½ÊÇÒ»¸ö×Ö½ÚÒ»¸ö×Ö½Ú½øÐеģ¬±È½ÏµÄÒÀ¾ÝÊÇÁ½¸ö×ֽڵĶþ½øÖÆÖµ¡£Ò²¾ÍÊÇ˵ËüÊÇÇø·Ö´óСдµÄ£¬ÒòΪͬһ¸ö×ÖĸµÄ´óСдµÄÊýÖµ±àÂëÊDz»Ò»ÑùµÄ¡£

  • ·Ç¶þ½øÖÆ×Ö·û´®µÄ±È½Ï·½Ê½ÊÇÒ»¸ö×Ö·ûÒ»¸ö×Ö·û½øÐеģ¬±È½ÏµÄÒÀ¾ÝÊÇÁ½¸ö×Ö·ûÔÚ×Ö·û¼¯ÖеÄÏȺó˳Ðò¡£ÔÚ´ó¶àÊý×Ö·û¼¯ÖУ¬Í¬Ò»¸ö×ÖĸµÄ´óСдÍùÍùÓÐ×ÅÏàͬµÄÏȺó˳Ðò£¬ËùÒÔËü²»Çø·Ö´óСд¡£

¶þ½øÖÆ×Ö·û´®Óë×Ö·û¼¯Î޹أ¬ËùÒÔÎÞÂÛ°´×Ö·û¼ÆË㻹Êǰ´×Ö½Ú¼ÆË㣬¶þ½øÖÆ×Ö·û´®µÄ³¤¶È¶¼ÊÇÒ»ÑùµÄ¡£ËùÒÔVARCHAR(20)²¢²»±íʾËü×î¶àÄÜÈÝÄÉ20¸ö×Ö·û£¬¶øÊDZíʾËü×î¶àÖ»ÄÜÈÝÄÉ¿ÉÒÔÓÃ20¸ö×Ö½Ú±íʾ³öÀ´µÄ×Ö·û¡£¶ÔÓÚµ¥×Ö½Ú×Ö·û¼¯£¬Ã¿¸ö×Ö·ûÖ»Õ¼ÓÃÒ»¸ö×Ö½Ú£¬ËùÒÔÕâÁ½Õߵij¤¶ÈÊÇÒ»ÑùµÄ£¬µ«¶ÔÓÚ¶à×Ö½Ú×Ö·û¼¯£¬ËüÄÜÈÝÄɵÄ×Ö·û¸öÊý¿Ï¶¨ÉÙÓÚ20¸ö¡£

1.2.2.1. CHARºÍVARCHAR

CHARºÍVARCHARÊÇ×î³£ÓõÄÁ½ÖÖ×Ö·û´®ÀàÐÍ£¬ËüÃÇÖ®¼äµÄÇø±ðÊÇ£º

  • CHARÊǹ̶¨³¤¶ÈµÄ£¬Ã¿¸öÖµÕ¼ÓÃÏàͬµÄ×Ö½Ú£¬²»¹»µÄλÊýMySQL»áÔÚËüµÄÓÒ±ßÓÿոñ×Ö·û²¹×ã¡£

  • VARCHARÊÇÒ»Öֿɱ䳤¶ÈµÄÀàÐÍ£¬Ã¿¸öÖµÕ¼ÓÃÆä¸ÕºÃµÄ×Ö½ÚÊýÔÙ¼ÓÉÏÒ»¸öÓÃÀ´¼Ç¼Æä³¤¶ÈµÄ×Ö½Ú¼´L+1×Ö½Ú¡£

CHAR(0)ºÍVARCHAR(0)¶¼ÊǺϷ¨µÄ¡£VARCHAR(0)ÊÇ´ÓMySQL4.0.2°æ¿ªÊ¼µÄ¡£ËüÃǵÄ×÷ÓÃÊÇ×÷Ϊռλ·û»òÓÃÀ´±íʾ¸÷ÖÖon/off¿ª¹ØÖµ¡£

ÈçºÎÑ¡ÔñCHARºÍVARCHAR£¬ÕâÀï¸ø³öÁ½¸öÔ­Ôò£º

  • Èç¹ûÊý¾Ý¶¼ÓÐÏàͬµÄ³¤¶È£¬Ñ¡ÓÃVARCHAR»á¶àÕ¼Óÿռ䣬ÒòΪÓÐһλÓÃÀ´´æ´¢Æä³¤¶È¡£Èç¹ûÊý¾Ý³¤¶Ì²»Ò»£¬Ñ¡ÓÃVARCHARÄܽÚÊ¡´æ´¢¿Õ¼ä¡£¶øCHAR²»ÂÛ×Ö·û³¤¶Ì¶¼ÐèÕ¼ÓÃÏàͬµÄ¿Õ¼ä£¬¼´Ê¹ÊÇ¿ÕÖµÒ²²»ÀýÍâ¡£

  • Èç¹û³¤¶È³öÈë²»´ó£¬¶øÇÒÊÇʹÓÃMyISAM»òISAMÀàÐÍµÄ±í£¬ÔòÓÃCHAR»á±ÈVARCHARºÃ£¬ÒòΪMyISAMºÍISAMÀàÐ͵ıí¶Ô´¦Àí¹Ì¶¨³¤¶ÈµÄÐеÄЧÂʸߡ£

[Note]
ÔÚÒ»¸öÊý¾Ý±íÀֻҪÓÐÒ»¸öÊý¾ÝÁеij¤¶ÈÊǿɱäµÄ£¬ÔòËùÓÐÊý¾ÝÁеij¤¶È½«ÊǿɱäµÄ¡£MySQL»á½øÐÐ×Ô¶¯µØ×ª»»¡£Ò»¸öÀýÍ⣬CHAR³¤¶ÈСÓÚ4µÄ²»»á½øÐÐ×Ô¶¯×ª»»£¬ÒòΪMySQL»áÈÏΪÕâÑù×öû±ØÒª£¬½ÚÊ¡²»Á˶àÉٿռ䡣·´¶øMySQL»á°Ñ´óÁ¿³¤¶ÈСµÄVARCHARת»»³ÉCHAR£¬ÒÔ¼õÉÙ¿Õ¼äÕ¼ÓÃÁ¿¡£

1.2.2.2. BLOBºÍTEXT

BLOBÊǶþ½øÖÆ×Ö·û´®£¬TEXTÊǷǶþ½øÖÆ×Ö·û´®¡£Á½Õß¶¼¿É´æ·Å´óÈÝÁ¿µÄÐÅÏ¢¡£

ÓйØBLOBºÍTEXTË÷ÒýµÄ½¨Á¢£º

  • BDB±íÀàÐͺÍMySQL3.23.2ÒÔÉϰ汾µÄMyISAM±íÀàÐÍÔÊÐíÔÚBLOBºÍTEXTÊý¾ÝÁÐÉϽ¨Á¢Ë÷Òý¡£

  • ISAM¡¢HEAPºÍInnoDB±í²»Ö§³Ö´ó¶ÔÏóÁеÄË÷Òý¡£

ʹÓÃBLOBºÍTEXTӦעÒâµÄÎÊÌ⣺

  • ÓÉÓÚÕâÁ½¸öÁÐÀàÐÍËù´æ´¢µÄÊý¾ÝÁ¿´ó£¬ËùÒÔɾ³ýºÍÐ޸IJÙ×÷ÈÝÒ×ÔÚÊý¾Ý±íÀï²úÉú´óÁ¿µÄË鯬£¬Ð趨ÆÚÔËÐÐOPTIMIZE TABLEÒÔ¼õÉÙË鯬ºÍÌá¸ßÐÔÄÜ¡£

  • Èç¹ûʹÓõÄÖµ·Ç³£¾Þ´ó£¬¾ÍÐè¶Ô·þÎñÆ÷½øÐÐÏàÓ¦µÄÓÅ»¯µ÷Õû£¬Ôö¼Ómax_allowed_packet²ÎÊýµÄÖµ¡£¶ÔÄÇЩ¿É»áÓõ½±äЩ¾Þ´óÊý¾ÝµÄ¿Í»§³ÌÐò£¬Ò²Ðè¼Ó´óËüÃǵÄÊý¾Ý°ü´óС¡£

1.2.2.3. ENUMºÍSET

ENUMºÍSET¶¼ÊDZȽÏÌØÊâµÄ×Ö·û´®Êý¾ÝÁÐÀàÐÍ£¬ËüÃǵÄȡֵ·¶Î§ÊÇÒ»¸öÔ¤Ïȶ¨ÒåºÃµÄÁÐ±í¡£ENUM»òSETÊý¾ÝÁеÄȡֵֻÄÜ´ÓÕâ¸öÁбíÖнøÐÐÑ¡Ôñ¡£ENUMºÍSETµÄÖ÷񻂿±ðÊÇ£º

  • ENUMÖ»ÄÜÈ¡µ¥Öµ£¬ËüµÄÊý¾ÝÁбíÊÇÒ»¸öö¾Ù¼¯ºÏ¡£ËüµÄºÏ·¨È¡ÖµÁбí×î¶àÔÊÐíÓÐ65535¸ö³ÉÔ±¡£ÀýÈ磺ENUM("N","Y")±íʾ£¬¸ÃÊý¾ÝÁеÄȡֵҪôÊÇ"Y"£¬ÒªÃ´¾ÍÊÇ"N"¡£

  • SET¿ÉÈ¡¶àÖµ¡£ËüµÄºÏ·¨È¡ÖµÁбí×î¶àÔÊÐíÓÐ64¸ö³ÉÔ±¡£¿Õ×Ö·û´®Ò²ÊÇÒ»¸öºÏ·¨µÄSETÖµ¡£

ENUMºÍSETµÄÖµÊÇÒÔ×Ö·û´®ÐÎʽ³öÏֵ쬵«ÔÚÄÚ²¿£¬MySQLÒÔÊýÖµµÄÐÎʽ´æ´¢ËüÃÇ¡£

  • ENUMµÄºÏ·¨È¡ÖµÁбíÖеÄ×Ö·û´®±»°´ÉùÃ÷¶¨ÒåµÄ˳Ðò±»±àºÅ£¬´Ó1¿ªÊ¼¡£

  • SETµÄ±àºÅ²»Êǰ´Ë³Ðò½øÐбàºÅµÄ£¬SETÖÐÿһ¸öºÏ·¨È¡Öµ¶¼¶ÔÓ¦×ÅSETÖµÀïµÄÒ»¸öλ¡£µÚÒ»¸öºÏ·¨È¡Öµ¶ÔÓ¦0룬µÚ¶þ¸öºÏ·¨È¡Öµ¶ÔÓ¦1룬ÒÔ´ËÀàÍÆ£¬Èç¹ûÊýÖµÐÎʽµÄSETÖµµÈÓÚ0,Ôò˵Ã÷ËüÊÇÒ»¸ö¿Õ×Ö·û´®£¬Èç¹ûij¸öºÏ·¨µÄȡֵ³öÏÖÔÚSETÊý¾ÝÁÐÀÓëÖ®¶ÔÓ¦µÄλ¾Í»á±»ÖÃλ£»Èç¹ûij¸öºÏ·¨µÄȡֵûÓгöÏÖÔÚSETÊý¾ÝÁÐÀÓëÖ®¶ÔÓ¦µÄλ¾Í»á±»ÇåÁã¡£ÕýÒòΪSETÖµÓëλÓÐÕâÑùµÄ¶ÔÓ¦¹ØÏµ£¬ËùÒÔSETÊý¾ÝÁеĶà¸öºÏ·¨È¡Öµ²ÅÄÜͬʱ³öÏÖ²¢¹¹³ÉSETÖµ¡£

1.2.2.4. ×Ö·û´®ÀàÐÍÊý¾ÝÁеÄ×Ö·û¼¯ÊôÐÔ

ÔÚMySQL 4.1ÒÔǰµÄ°æ±¾£¬×Ö·û´®Êý¾ÝÁеÄ×Ö·û¼¯ÓÉ·þÎñÆ÷µÄ×Ö·û¾ö¶¨£¬MySQL 4.1°æÒÔºóµÄ°æ±¾¿É¶Ôÿ¸ö×Ö·û´®Êý¾ÝÁÐÖ¸¶¨²»Í¬µÄ×Ö·û´®¡£Èç¹û°´Ä¬ÈÏ·½Ê½ÉèÖ㬿ɰ´Êý¾ÝÁС¢Êý¾Ý±í¡¢Êý¾Ý¿â¡¢·þÎñÆ÷µÄ˳Ðò¹ØÁª×Ö·û´®µÄ×Ö·û¼¯£¬Ö±µ½ÕÒÒ»¸öÃ÷È·¶¨ÒåµÄ×Ö·û¼¯¡£

1.2.3. ÈÕÆÚ,ʱ¼äÐÍÊý¾ÝÁÐÀàÐÍ

MySQLµÄÈÕÆÚʱ¼äÀàÐÍÓУºDATE£¬DATETIME£¬TIME£¬TIMESTAMPºÍYEAR£¬Ï±íÊÇÕâЩÀàÐ͵Äȡֵ·¶Î§ºÍ´æ´¢¿Õ¼äÒªÇó£º

Table 1.4. ÈÕÆÚ£¬Ê±¼äÀàÐÍÁÐ

ÀàÐÍȡֵ·¶Î§´æ´¢¿Õ¼äÁãÖµ±íʾ·¨
DATE1000-01-01~9999-12-313×Ö½Ú(MySQL3.23°æÒÔǰÊÇ4×Ö½Ú )0000-00-00
TIME-838:59:59~838:59:593×Ö½Ú00:00:00
DATETIME1000-01-01 00:00:00~9999-12-31 23:59:598×Ö½Ú0000-00-00 00:00:00
TIMESTAMP19700101000000~2037ÄêµÄij¸öʱ¿Ì4×Ö½Ú00000000000000
YEARYEAR(4)£º1901~2155 YEAR(2)£º1970~20691×Ö½Ú0000
[Note]
MySQL×ÜÊǰÑÈÕÆÚºÍÈÕÆÚÀïµÄÄê·Ý·ÅÔÚ×îÇ°Ãæ£¬°´ÄêÔÂÈÕµÄ˳ÐòÏÔʾ¡£

1.2.3.1. DATE¡¢TIME¡¢DATATIMEÊý¾ÝÁÐÀàÐÍ

DATE¡¢TIMEºÍDATATIMEÀàÐÍ·Ö±ð´æ·ÅÈÕÆÚÖµ¡¢Ê±¼äÖµ¡¢ÈÕÆÚºÍʱ¼äÖµµÄ×éºÏ¡£ËüÃǵĸñʽ·Ö±ðÊÇ¡°CCYY-MM-DD¡±¡¢¡°hh:mm:ss¡±¡¢¡°CCYY-MM-DD hh:mm:ss¡±¡£

DATATIMEÀïµÄʱ¼äÖµºÍTIMEÖµÊÇÓÐÇø±ðµÄ£¬DATATIMEÀïµÄʱ¼äÖµ´ú±íµÄÊǼ¸µã¼¸·Ö£¬TIMEÖµ´ú±íµÄÊÇËù»¨·ÑµÄʱ¼ä¡£µ±ÏòTIMEÊý¾ÝÁвåֵʱ£¬ÐèÓÃʱ¼äµÄÍêÕûд·¨£¬Èç12·Ö30ÃëҪд³É¡°00:12:30¡±¡£

1.2.3.2. TIMESTAMPÊý¾ÝÁÐÀàÐÍ

TIMESTAMPÊý¾ÝÁеĸñʽÊÇCCYYMMDDhhmmss£¬È¡Öµ·¶Î§´Ó19700101000000¿ªÊ¼£¬¼´1970Äê1ÔÂ1ºÅ£¬×î´óµ½2037Äê¡£ËüµÄÌØµãÊÇÄܰÑÊý¾ÝÐеĴ´½¨»òÐÞ¸Äʱ¼ä¼Ç¼ÏÂÀ´£º

  • Èç¹û°ÑÒ»¸öNULLÖµ²åÈëTIMESTAMPÁУ¬Õâ¸öÊý¾ÝÁоͽ«×Ô¶¯È¡ÖµÎªµ±Ç°µÄÈÕÆÚºÍʱ¼ä¡£

  • ÔÚ´´½¨ºÍÐÞ¸ÄÊý¾ÝÐÐʱ£¬Èç¹ûûÓÐÃ÷È·¶ÔTIMESTAMPÊý¾ÝÁнøÐи³Öµ£¬ÔòËü¾Í»á×Ô¶¯È¡ÖµÎªµ±Ç°µÄÈÕÆÚºÍʱ¼ä¡£Èç¹ûÐÐÖÐÓжà¸öTIMESTAMPÁУ¬Ö»ÓеÚÒ»¸ö»á×Ô¶¯È¡Öµ¡£

  • Èç¹û¶ÔTIMESTAMPÉèÖÃÒ»¸öÈ·¶¨µÄÈÕÆÚºÍʱ¼äÖµ£¬Ôò»áʹTIMESTAMPµÄ×Ô¶¯È¡Öµ¹¦ÄÜʧЧ¡£

TIMESTAMPĬÈϵÄÁпíÊÇ14,¿ÉÖ¸¶¨ÁÐ¿í£¬ÒԸıäÏÔʾЧ¹û¡£µ«²»ÂÛÄãÖ¸¶¨µÄÁпíÈçºÎ£¬MySQL¶¼ÊÇÒÔ4×Ö½ÚÀ´´æ´¢TIMESTAMPÖµ£¬Ò²×ÜÊÇÒÔ14λ¾«¶ÈÀ´¼ÆËã¡£

Èç¹ûÐèÒª°Ñ´´½¨Ê±¼äºÍ×î½üÒ»´ÎÐÞ¸Äʱ¼äͬʱ¼Ç¼ÏÂÀ´£¬¿ÉÒÔÓÃÁ½¸öʱ¼ä´ÁÀ´¼Ç¼£¬Ò»¸ö¼Ç¼´´½¨Ê±¼ä£¬Ò»¸ö¼Ç¼ÐÞ¸Äʱ¼ä¡£²»¹ýÐè¼ÇסÁ½¼þÊ£¬Ò»ÊÇÒª°Ñ¼Ç¼ÐÞ¸Äʱ¼äµÄTIMESTAMPÊý¾ÝÁзÅÔÚ×îÇ°Ãæ£¬ÕâÑù²Å»á×Ô¶¯È¡Öµ£»¶þÊÇ´´½¨Ò»ÌõмǼʱ£¬ÒªÓÃnow()º¯ÊýÀ´³õʼ»¯´´½¨Ê±¼äTIMESTAMPÊý¾ÝÁУ¬ÕâÑù£¬¸ÃTIMESTAMPÊý¾ÝÁоͲ»»áÔٱ仯¡£

1.2.3.3. YEAR

YEARÊÇÒ»ÖÖµ¥×Ö½ÚµÄÊý¾ÝÁÐÀàÐÍ£¬YEAR(4)µÄȡֵ·¶Î§ÊÇ1901~2155,YEAR(2)µÄȡֵ·¶Î§ÊÇ1970~2069,µ«Ö»ÏÔʾ×îºóÁ½Î»Êý¡£MySQLÄÜ×Ô¶¯°ÑÁ½Î»Êý×ÖÄê·Ýת»»³ÉËÄλÊý×ÖµÄÄê·Ý£¬Èç97ºÍ14·Ö±»×ª»»³É1997ºÍ2014¡£×ª»»¹æÔòÊÇÕâÑùµÄ£º

  • Äê·ÝÖµ00~69½«±»×ª»»³É2000~2069£»

  • Äê·ÝÖµ70~99½«±»×ª»»³É1970~1999¡£

[Note]
00±»×ª»»³É0000,¶ø²»ÊÇ2000¡£ÒòΪÊýÖµ00Ò²¾ÍÊÇ0,¶ø0ÖµÊÇYEARµÄÒ»¸öºÏ·¨È¡Öµ¡£

1.3. Ψһ±àºÅ

ÔÚÊý¾Ý¿âÓ¦Óã¬ÎÒÃǾ­³£ÒªÓõ½Î¨Ò»±àºÅ£¬ÒÔ±êʶ¼Ç¼¡£ÔÚMySQLÖпÉͨ¹ýÊý¾ÝÁеÄAUTO_INCREMENTÊôÐÔÀ´×Ô¶¯Éú³É¡£MySQLÖ§³Ö¶àÖÖÊý¾Ý±í£¬Ã¿ÖÖÊý¾Ý±íµÄ×ÔÔöÊôÐÔ¶¼ÓвîÒ죬ÕâÀォ½éÉܸ÷ÖÖÊý¾Ý±íÀïµÄÊý¾ÝÁÐ×ÔÔöÊôÐÔ¡£

  • ISAM±í

    • Èç¹û°ÑÒ»¸öNULL²åÈëµ½Ò»¸öAUTO_INCREMENTÊý¾ÝÁÐÀïÈ¥£¬MySQL½«×Ô¶¯Éú³ÉÏÂÒ»¸öÐòÁбàºÅ¡£±àºÅ´Ó1¿ªÊ¼£¬²¢1Ϊ»ùÊýµÝÔö¡£

    • °Ñ0²åÈëAUTO_INCREMENTÊý¾ÝÁеÄЧ¹ûÓë²åÈëNULLÖµÒ»Ñù¡£µ«²»½¨ÒéÕâÑù×ö£¬»¹ÊÇÒÔ²åÈëNULLֵΪºÃ¡£

    • µ±²åÈë¼Ç¼ʱ£¬Ã»ÓÐΪAUTO_INCREMENTÃ÷È·Ö¸¶¨Öµ£¬ÔòµÈͬ²åÈëNULLÖµ¡£

    • µ±²åÈë¼Ç¼ʱ£¬Èç¹ûΪAUTO_INCREMENTÊý¾ÝÁÐÃ÷È·Ö¸¶¨ÁËÒ»¸öÊýÖµ£¬Ôò»á³öÏÖÁ½ÖÖÇé¿ö£¬Çé¿öÒ»£¬Èç¹û²åÈëµÄÖµÓëÒÑÓеıàºÅÖØ¸´£¬Ôò»á³öÏÖ³ö´íÐÅÏ¢£¬ÒòΪAUTO_INCREMENTÊý¾ÝÁеÄÖµ±ØÐëÊÇΨһµÄ£»Çé¿ö¶þ£¬Èç¹û²åÈëµÄÖµ´óÓÚÒѱàºÅµÄÖµ£¬Ôò»á°Ñ¸Ã²åÈëµ½Êý¾ÝÁÐÖУ¬²¢Ê¹ÔÚÏÂÒ»¸ö±àºÅ½«´ÓÕâ¸öÐÂÖµ¿ªÊ¼µÝÔö¡£Ò²¾ÍÊÇ˵£¬¿ÉÒÔÌø¹ýһЩ±àºÅ¡£

    • Èç¹û×ÔÔöÐòÁеÄ×î´óÖµ±»É¾³ýÁË£¬ÔòÔÚ²åÈëмǼʱ£¬¸ÃÖµ±»ÖØÓá£

    • Èç¹ûÓÃUPDATEÃüÁî¸üÐÂ×ÔÔöÁУ¬Èç¹ûÁÐÖµÓëÒÑÓеÄÖµÖØ¸´£¬Ôò»á³ö´í¡£Èç¹û´óÓÚÒÑÓÐÖµ£¬ÔòÏÂÒ»¸ö±àºÅ´Ó¸ÃÖµ¿ªÊ¼µÝÔö¡£

    • Èç¹ûÓÃreplaceÃüÁî»ùÓÚAUTO_INCREMENTÊý¾ÝÁÐÀïµÄÖµÀ´ÐÞ¸ÄÊý¾Ý±íÀïµÄÏÖÓмǼ£¬¼´AUTO_INCREMENTÊý¾ÝÁгöÏÖÔÚÁËreplaceÃüÁîµÄwhere×Ó¾äÀÏàÓ¦µÄAUTO_INCREMENTÖµ½«²»»á·¢Éú±ä»¯¡£µ«Èç¹ûreplaceÃüÁîÊÇͨ¹ýÆäËüµÄPRIMARY KEY OR UNIQUEË÷ÒýÀ´ÐÞ¸ÄÏÖÓмǼµÄ(¼´AUTO_INCREMENTÊý¾ÝÁÐûÓгöÏÖÔÚreplaceÃüÁîµÄwhere×Ó¾äÖÐ)£¬ÏàÓ¦µÄAUTO_INCREMENTÖµ--Èç¹ûÉèÖÃÆäΪNULL(ÈçûÓжÔËü¸³Öµ)µÄ»°--¾Í»á·¢Éú±ä»¯¡£

    • last_insert_id()º¯Êý¿É»ñµÃ×ÔÔöÁÐ×Ô¶¯Éú³ÉµÄ×îºóÒ»¸ö±àºÅ¡£µ«¸Ãº¯ÊýÖ»Óë·þÎñÆ÷µÄ±¾´Î»á»°¹ý³ÌÖÐÉú³ÉµÄÖµÓйء£Èç¹ûÔÚÓë·þÎñÆ÷µÄ±¾´Î»á»°ÖÐÉÐδÉú³ÉAUTO_INCREMENTÖµ£¬Ôò¸Ãº¯Êý·µ»Ø0¡£

    ÆäËüÊý¾Ý±íµÄ×Ô¶¯±àºÅ»úÖÆ¶¼ÒÔISAM±íÖеĻúÖÆÎª»ù´¡¡£

  • MyISAMÊý¾Ý±í

    • ɾ³ý×î´ó±àºÅµÄ¼Ç¼ºó£¬¸Ã±àºÅ²»¿ÉÖØÓá£

    • ¿ÉÔÚ½¨±íʱ¿ÉÓá°AUTO_INCREMENT=n¡±Ñ¡ÏîÀ´Ö¸¶¨Ò»¸ö×ÔÔöµÄ³õʼֵ¡£

    • ¿ÉÓÃalter table table_name AUTO_INCREMENT=nÃüÁîÀ´ÖØÉè×ÔÔöµÄÆðʼֵ¡£

    • ¿ÉʹÓø´ºÏË÷ÒýÔÚͬһ¸öÊý¾Ý±íÀï´´½¨¶à¸öÏ໥¶ÀÁ¢µÄ×ÔÔöÐòÁУ¬¾ßÌå×ö·¨ÊÇÕâÑùµÄ£ºÎªÊý¾Ý±í´´½¨Ò»¸öÓɶà¸öÊý¾ÝÁÐ×é³ÉµÄPRIMARY KEY OR UNIQUEË÷Òý£¬²¢°ÑAUTO_INCREMENTÊý¾ÝÁаüÀ¨ÔÚÕâ¸öË÷ÒýÀï×÷ΪËüµÄ×îºóÒ»¸öÊý¾ÝÁС£ÕâÑù£¬Õâ¸ö¸´ºÏË÷ÒýÀï£¬Ç°ÃæµÄÄÇЩÊý¾ÝÁÐÿ¹¹³ÉÒ»ÖÖ¶ÀÒ»ÎÞ¶þµÄ×éºÏ£¬×îĩβµÄAUTO_INCREMENTÊý¾ÝÁоͻáÉú³ÉÒ»¸öÓë¸Ã×éºÏÏà¶ÔÓ¦µÄÐòÁбàºÅ¡£

  • HEAPÊý¾Ý±í

    • HEAPÊý¾Ý±í´ÓMySQL4.1¿ªÊ¼²ÅÔÊÐíʹÓÃ×ÔÔöÁС£

    • ×ÔÔöÖµ¿Éͨ¹ýCREATE TABLEÓï¾äµÄ AUTO_INCREMENT=nÑ¡ÏîÀ´ÉèÖá£

    • ¿Éͨ¹ýALTER TABLEÓï¾äµÄAUTO_INCREMENT=nÑ¡ÏîÀ´ÐÞ¸Ä×ÔÔöʼ³õÖµ¡£

    • ±àºÅ²»¿ÉÖØÓá£

    • HEAPÊý¾Ý±í²»Ö§³ÖÔÚÒ»¸öÊý¾Ý±íÖÐʹÓø´ºÏË÷ÒýÀ´Éú³É¶à¸ö»¥²»¸ÉÈŵÄÐòÁбàºÅ¡£

  • BDBÊý¾Ý±í

    • ²»¿Éͨ¹ýCREATE TABLE OR ALTER TABLEµÄAUTO_INCREMENT=nÑ¡ÏîÀ´¸Ä±ä×ÔÔö³õʼֵ¡£

    • ¿ÉÖØÓñàºÅ¡£

    • Ö§³ÖÔÚÒ»¸öÊý¾Ý±íÀïʹÓø´ºÏË÷ÒýÀ´Éú³É¶à¸ö»¥²»¸ÉÈŵÄÐòÁбàºÅ¡£

  • InnDBÊý¾Ý±í

    • ²»¿Éͨ¹ýCREATE TABLE OR ALTER TABLEµÄAUTO_INCREMENT=nÑ¡ÏîÀ´¸Ä±ä×ÔÔö³õʼֵ¡£

    • ²»¿ÉÖØÓñàºÅ¡£

    • ²»Ö§³ÖÔÚÒ»¸öÊý¾Ý±íÀïʹÓø´ºÏË÷ÒýÀ´Éú³É¶à¸ö»¥²»¸ÉÈŵÄÐòÁбàºÅ¡£

ÔÚʹÓÃAUTO_INCREMENTʱ£¬Ó¦×¢ÒâÒÔϼ¸µã£º

  • AUTO_INCREMENTÊÇÊý¾ÝÁеÄÒ»ÖÖÊôÐÔ£¬Ö»ÊÊÓÃÓÚÕûÊýÀàÐÍÊý¾ÝÁС£

  • ÉèÖÃAUTO_INCREMENTÊôÐÔµÄÊý¾ÝÁÐÓ¦¸ÃÊÇÒ»¸öÕýÊýÐòÁУ¬ËùÒÔÓ¦¸Ã°Ñ¸ÃÊý¾ÝÁÐÉùÃ÷ΪUNSIGNED£¬ÕâÑùÐòÁеıàºÅ¸ö¿ÉÔö¼ÓÒ»±¶¡£

  • AUTO_INCREMENTÊý¾ÝÁбØÐëÓÐΨһË÷Òý£¬ÒÔ±ÜÃâÐòºÅÖØ¸´¡£

  • AUTO_INCREMENTÊý¾ÝÁбØÐë¾ß±¸NOT NULLÊôÐÔ¡£

  • AUTO_INCREMENTÊý¾ÝÁÐÐòºÅµÄ×î´óÖµÊܸÃÁеÄÊý¾ÝÀàÐÍÔ¼Êø£¬ÈçTINYINTÊý¾ÝÁеÄ×î´ó±àºÅÊÇ127,Èç¼ÓÉÏUNSIGNED£¬Ôò×î´óΪ255¡£Ò»µ©´ïµ½ÉÏÏÞ£¬AUTO_INCREMENT¾Í»áʧЧ¡£

  • µ±½øÐÐÈ«±íɾ³ýʱ£¬AUTO_INCREMENT»á´Ó1ÖØÐ¿ªÊ¼±àºÅ¡£È«±íɾ³ýµÄÒâ˼ÊÇ·¢³öÒÔÏÂÁ½ÌõÓï¾äʱ£º

    delete from table_name;
    or
    truncate table table_name
    

    ÕâÊÇÒòΪ½øÐÐÈ«±í²Ù×÷ʱ£¬MySQLʵ¼ÊÊÇ×öÁËÕâÑùµÄÓÅ»¯²Ù×÷£ºÏȰÑÊý¾Ý±íÀïµÄËùÓÐÊý¾ÝºÍË÷Òýɾ³ý£¬È»ºóÖØ½¨Êý¾Ý±í¡£Èç¹ûÏëɾ³ýËùÓеÄÊý¾ÝÐÐÓÖÏë±£ÁôÐòÁбàºÅÐÅÏ¢£¬¿ÉÕâÑùÓÃÒ»¸ö´øwhereµÄdeleteÃüÁîÒÔÒÖÖÆMySQLµÄÓÅ»¯£º

    delete from table_name where 1;
    

    Õ⽫ÆÈʹMySQLΪÿ¸öɾ³ýµÄÊý¾ÝÐж¼×öÒ»´ÎÌõ¼þ±í´ïʽµÄÇóÖµ²Ù×÷¡£

  • Ç¿ÖÆMySQL²»¸´ÓÃÒѾ­Ê¹ÓùýµÄÐòÁÐÖµµÄ·½·¨ÊÇ£ºÁíÍâ´´½¨Ò»¸öרÃÅÓÃÀ´Éú³ÉAUTO_INCREMENTÐòÁеÄÊý¾Ý±í£¬²¢×öµ½ÓÀÔ¶²»È¥É¾³ý¸Ã±íµÄ¼Ç¼¡£µ±ÐèÒªÔÚÖ÷Êý¾Ý±íÀï²åÈëÒ»Ìõ¼Ç¼ʱ£¬ÏÈÔÚÄǸöרÃÅÉú³ÉÐòºÅµÄ±íÖвåÈëÒ»¸öNULLÖµÒÔ²úÉúÒ»¸ö±àºÅ£¬È»ºó£¬ÔÚÍùÖ÷Êý¾Ý±íÀï²åÈëÊý¾Ýʱ£¬ÀûÓÃLAST_INSERT_ID()º¯ÊýÈ¡µÃÕâ¸ö±àºÅ£¬²¢°ÑËü¸³Öµ¸øÖ÷±íµÄ´æ·ÅÐòÁеÄÊý¾ÝÁС£È磺

    insert into id set id = NULL;
    insert into main set main_id = LAST_INSERT_ID();
    
  • ¿ÉÓÃalterÃüÁî¸øÒ»¸öÊý¾Ý±íÔö¼ÓÒ»¸ö¾ßÓÐAUTO_INCREMENTÊôÐÔµÄÊý¾ÝÁС£MySQL»á×Ô¶¯Éú³ÉËùÓеıàºÅ¡£

  • ÒªÖØÐÂÅÅÁÐÏÖÓеÄÐòÁбàºÅ£¬×î¼òµ¥µÄ·½·¨ÊÇÏÈɾ³ý¸ÃÁУ¬ÔÙÖØ½¨¸Ã£¬MySQL»áÖØÐÂÉúÁ¬ÐøµÄ±àºÅÐòÁС£

  • ÔÚ²»ÓÃAUTO_INCREMENTµÄÇé¿öÏÂÉú³ÉÐòÁУ¬¿ÉÀûÓôø²ÎÊýµÄLAST_INSERT_ID()º¯Êý¡£Èç¹ûÓÃÒ»¸ö´ø²ÎÊýµÄLAST_INSERT_ID(expr)È¥²åÈë»òÐÞ¸ÄÒ»¸öÊý¾ÝÁУ¬½ô½Ó×ÅÓÖµ÷Óò»´ø²ÎÊýµÄLAST_INSERT_ID()º¯Êý£¬ÔòµÚ¶þ´Îº¯Êýµ÷Ó÷µ»ØµÄ¾ÍÊÇexprµÄÖµ¡£ÏÂÃæÑÝʾ¸Ã·½·¨µÄ¾ßÌå²Ù×÷£º

    ÏÈ´´½¨Ò»¸öÖ»ÓÐÒ»¸öÊý¾ÝÐеÄÊý¾Ý±í£º
    create table seq_table (id int unsigned not null);
    insert into seq_table values (0);
    ½Ó×ÅÓÃÒÔϲÙ×÷¼ìË÷³öÐòÁкţº
    update seq_table set seq = LAST_INSERT_ID( seq + 1 );
    select LAST_INSERT_ID();
    ͨ¹ýÐÞ¸Äseq+1Öеij£ÊýÖµ£¬¿ÉÉú³É²»Í¬²½³¤µÄÐòÁУ¬Èçseq+10¿ÉÉú³É²½³¤Îª10µÄÐòÁС£
    

    ¸Ã·½·¨¿ÉÓÃÓÚ¼ÆÊýÆ÷£¬ÔÚÊý¾Ý±íÖвåÈë¶àÐÐÒԼǼ²»Í¬µÄ¼ÆÊýÖµ¡£ÔÙÅäºÏLAST_INSERT_ID()º¯ÊýµÄ·µ»ØÖµÉú³É²»Í¬ÄÚÈݵļÆÊýÖµ¡£ÕâÖÖ·½·¨µÄÓŵãÊDz»ÓÃÊÂÎñ»òLOCK£¬UNLOCK±í¾Í¿ÉÉú³ÉΨһµÄÐòÁбàºÅ¡£²»»áÓ°ÏìÆäËü¿Í»§³ÌÐòµÄÕý³£±í²Ù×÷¡£

1.4. ×Ö·û¼¯Ö§³Ö

MySQL4.1ÒÔǰ°æ±¾·þÎñÆ÷Ö»ÄÜʹÓõ¥Ò»×Ö·û¼¯£¬´ÓMySQL4.1°æ±¾¿ªÊ¼£¬²»½ö·þÎñÆ÷Äܹ»Ê¹ÓöàÖÖ×Ö·û¼¯£¬¶øÇÒÔÚ·þÎñÆ÷¡¢Êý¾Ý¿â¡¢Êý¾Ý±í¡¢Êý¾ÝÁÐÒÔ¼°×Ö·û´®³£Êý¶à¸ö¼¶±ðÉÏÉèÖò»Í¬µÄ×Ö·û¼¯¡£

1.4.1. MySQL4.1ÒÔǰ°æ±¾

MySQL4.1ÒÔǰ°æ±¾µÄ×Ö·û¼¯ÓÉ·þÎñÆ÷ĬÈÏÖ¸¶¨£¬Ä¬ÈÏÖµÊDZàÒëϵͳʱָ¶¨µÄ×Ö·û¼¯£¬¸Ã×Ö·û¼¯Ò²¿Éͨ¹ýÔÚÆô¶¯·þÎñÆ÷ʱָ¶¨--default-character-setÀ´Ð޸ġ£ÕâÖÖÐ޸Ļá¶ÔÊý¾Ý±íµÄË÷ÒýÔì³ÉÓ°Ï죬ÒòΪË÷ÒýµÄ˳ÐòÊǺÍ×Ö·û¼¯Óйصģ¬ÐÞ¸Ä×Ö·û¼¯»áʹÕâ¸öÒÑÅÅÐòµÄ˳Ðò²úÉú´íÎó¡£Òª½â¾ö¸ÃÎÊÌ⣬ÎÒÃÇÒªÓÃÐ޸ĺóµÄ×Ö·û¼¯µÄÅÅÐò˳ÐòÖØ½¨±íµÄË÷Òý¡£Öؽ¨Ë÷ÒýÓÐÒÔϼ¸ÖÖ·½·¨£º

  • ÓÃmysqldumpµ¼³öÊý¾Ý£¬ÔÙÇå³ý±íÀïµÄÄÚÈÝ£¬×îºóÓõ¼³öÎļþÖØÐµ¼Èë¡£Êý¾Ý±íµÄË÷Òý½«ÔÚµ¼ÈëÊýÊ±ÖØ½¨¡£¸Ã·½·¨ÊÊÓÃÓÚËùÓÐÊý¾Ý±íÀàÐÍ¡£

  • ɾ³ýË÷Òý£¬È»ºóÖØ½¨¡£ÓÃalter tableÃüÁî»òdrop indexºÍcreate indexÃüÁîÀ´Íê³É¡£¸Ã·½·¨Ò²ÊÊÓÃÓÚËùÓÐÊý¾Ý±íÀàÐÍ¡£µ«¸Ã·½·¨ÐèÒªÎÒÃÇÁ˽âÖØ½¨Ë÷ÒýµÄ¾«È·¶¨Òå¡£

  • MyISAMÊý¾Ý±íµÄË÷Òý¿ÉÒÔÓÃmyisamchk³ÌÐòµÄ--recoverºÍ--quickÑ¡Ïî¼ÓÉÏÒ»¸öÓÃÀ´É趨ÐÂ×Ö·û¼¯µÄ--set-character-setÑ¡Ïî½øÐÐÖØ½¨¡£»¹¿ÉÒÔÓÃmysqlcheck³ÌÐòµÄ--repairºÍ--quickÑ¡Ïî»òÕßÒ»¸ö´øQUICKÑ¡ÏîµÄREPLACE TABLEÓï¾äÀ´Öؽ¨Ë÷Òý£¬ÕâÖÖ·½Ê½½Ï·½±ã¡£

1.4.2. MySQL4.1ÒÔºó°æ±¾

MySQL4.1ÒÔºóµÄ°æ±¾¶Ô×Ö·û¼¯µÄÖ§³ÖºÃÁ˺ܶ࣬¾ßÓÐÒÔÏÂÐÂÔö¹¦ÄÜ£º

  • Ö§³Ö·þÎñÆ÷ͬʱʹÓöàÖÖ×Ö·û¼¯¡£

  • ÔÊÐíÔÚ·þÎñÆ÷£¬Êý¾Ý¿â£¬Êý¾Ý±í£¬Êý¾ÝÁеȶ༶±ðÉÏÉèÖò»Í¬µÄ×Ö·û¼¯¡£

    • ·þÎñÆ÷µÄĬÈÏ×Ö·û¼¯ÔÚ±àÒëʱѡ¶¨£¬µ«¿ÉÔÚÆô¶¯·þÎñÆ÷ʱÓÃ--default-character-setÑ¡ÏîÀ´¸ü¸Ä¡£

    • ÓÃALTER DATABASE db_name DEFAULT CHARACTER SET charsetÀ´ÉèÖÃÊý¾Ý¿â×Ö·û¼¯¡£ Èç¹ûÖ»ÓÐdefault²ÎÊý£¬ÔòʹÓ÷þÎñÆ÷µÄ×Ö·û¼¯¡£

    • ÓÃCREATE TABLE table_name(...) CHARACTER SET = charsetÉèÖÃÊý¾Ý±í×Ö·û¼¯¡£Èç¹ûcharsetΪdefault£¬ÔòʹÓÃÊý¾Ý±íËùÔÚÊý¾Ý¿âµÄ×Ö·û¼¯×÷ΪÊý¾Ý±íµÄ×Ö·û¼¯¡£

    • ÔÚÊý¾ÝÁÐÖУ¬¿ÉÓÃCHARACTER SET charsetÊôÐÔÀ´ÉèÖÃÊý¾ÝÁеÄ×Ö·û¼¯¡£charset²»ÄÜÊÇdefault£¬Èç¹ûûÓиÃÊôÐÔ£¬ÔòĬÈÏʹÓÃÊý¾Ý±íµÄ×Ö·û¼¯¡£ÔÊÐíÉèÖÃ×Ö·û¼¯µÄÊý¾ÝÁÐÓÐchar£¬varchar(²»´øbinaryÊôÐÔ)¼°TEXTÀàÐÍ¡£

    • ÓÃ_charset strת»»×Ö·û´®³£ÊýµÄ×Ö·û¼¯¡£È磺_utf8 'mysql'£¬_latinl 'oracle'¡£¸Ã·½·¨Ö»ÊÊÓÃÓÚÀ¨ÔÚÒýºÅÄÚµÄ×Ö·û´®£¬ÆäËüÊ®Áù½øÖƳ£Êý ¡¢×Ö·û´®±í´ïʽµÈ¿ÉÓÃCONVERT()º¯Êý½øÐÐת»»£¬È磺SELECT CONVERT( str USING charset)¡£

  • ͨ¹ýMySQLÌṩµÄº¯Êý¿É½øÐÐ×Ö·û¼¯×ª»»ºÍ²éѯ¡£

  • ÐÂÔöµÄCOLLATE²Ù×÷·ûʹÎÒÃǿɰ´Ä³Ò»ÖÖ×Ö·û¼¯µÄÅÅÐò˳ÐòÀ´´¦ÀíÁíÒ»ÖÖ×Ö·û¼¯µÄÊý¾Ý¡£È磺SELECT a from t ORDER BY a COLLATE utf-8£»

  • ÓÃSHOW CHARACTER SETÃüÁî¿ÉÏÔʾ·þÎñÆ÷Ö§³ÖµÄ×Ö·û¼¯ÁÐ±í¡£

  • µ±·þÎñÆ÷ת»»µ½ÁíÒ»ÖÖ×Ö·û¼¯Ê±£¬»á×Ô¶¯¶ÔË÷Òý½øÐÐÖØÐÂÅÅÐò¡£

  • ͨ¹ýUTF-8ºÍUCS2×Ö·û¼¯ÌṩÁËUnicodeÖ§³Ö¡£

MySQLÏÖÔÚ»¹²»Ö§³Ö£º1,ÔÚͬһ¸ö×Ö·û´®Àï»ìÓò»Í¬×Ö·û¼¯µÄ×Ö·û£»2,ÔÚͬһ¸öÊý¾ÝÁÐÀï»ìÓò»Í¬µÄ×Ö·û¼¯¡£

1.4.3. ¸÷¼¶×Ö·û¼¯µÄ²éѯ·½·¨

  • ·þÎñÆ÷¼¶

    SHOW CHARACTER SET£»¿É²é³ö¿É¹©Ê¹ÓõÄËùÓÐ×Ö·û¼¯¡£
    SHOW VARIABLES LIKE 'character_set'£»¿É²é³ö·þÎñÆ÷µÄĬÈÏ×Ö·û¼¯¡£
    
  • ¿É²é³öÊý¾Ý¿â¼¶µÄ×Ö·û¼¯¡£

    SHOW CREATE DATABASE db_name£»
    
  • Á½ÌõÃüÁî¿É²é³öÊý¾Ý±íµÄ×Ö·û¼¯¡£

    SHOW CREATE TABLE table_name£»
    SHOW TABLE STATUS LIKE 'table_name'
    
  • ÒÔϼ¸ÃüÁî¿É²é³öÊý¾ÝÁеÄ×Ö·û¼¯£º

    DESCRIBE table_name;
    SHOW COLUMNS FROM table_name;
    SHOW CREATE TABLE table_name;
    
  • ÓÃCHARSET()º¯Êý¿ÉÈ·¶¨Ìض¨×Ö·û´®£¬×Ö·û´®±í´ïʽ»òÊý¾ÝÁÐÖµÏà¹ØÁªµÄ×Ö·û´®µÄ×Ö·û¼¯¡£È磺SELECT CHARSET(str)¡£

1.4.4. UnicodeÖ§³Ö

MySQLÌṩÁ½ÖÖ×Ö·û¼¯À´Ö§³ÖUnicode¡£Ò»¸öÊÇUTF-8£¬Ò»Öֿɱ䳤µÄ±àÂë¸ñʽ£¬ÐèÓÃ1ÖÁ4¸ö×Ö½ÚÀ´±íʾһ¸ö×Ö·û£»ÁíÒ»¸öÊÇUCS2£¬¸Ã×Ö·û¼¯ÖеÄÿ¸ö×Ö·ûÐèÒªÓÃÁ½¸ö×Ö½ÚÀ´±íʾ¡£

1.5. ÈçºÎÑ¡ÔñÊý¾ÝÁÐÀàÐÍ£¿

Ñ¡ÔñÕýÈ·µÄÊý¾ÝÁÐÀàÐÍÄÜ´ó´óÌá¸ßÊý¾Ý¿âµÄÐÔÄܺÍʹÊý¾Ý¿â¾ßÓиßÀ©Õ¹ÐÔ¡£ÔÚÑ¡ÔñÊý¾ÝÁÐÀàÐÍʱ£¬Çë´ÓÒÔϼ¸¸ö·½Ã濼ÂÇ£º

  • ´æ·Åµ½Êý¾ÝÁÐÖеÄÊý¾ÝÀàÐÍ¡£

  • Êý¾ÝÖµµÄȡֵ·¶Î§¡£

  • ¿¼ÂÇÐÔÄܺʹ¦ÀíЧÂÊ¡£

    • ÊýÖµ²Ù×÷±È×Ö·û²Ù×÷¿ì¡£

    • СÀàÐ͵Ĵ¦ÀíËٶȱȴóÀàÐͿ졣

    • ²»Í¬Êý¾Ý±íÖй̶¨³¤¶ÈÀàÐͺͿɱ䳤¶ÈÀàÐ͵Ĵ¦ÀíЧÂÊÊDz»Í¬µÄ¡£

      ¿É±ä³¤¶ÈÀàÐÍÔÚ¾­¹ýɾ³ýºÍÐ޸IJÙ×÷ºóÈÝÒײúÉúË鯬£¬½µµÍϵͳÐÔÄÜ£¬Ð趨ÆÚÔËÐÐOPTIMIZE TABLEÃüÁîÒÔÓÅ»¯Êý¾Ý±í¡£

      ¹Ì¶¨³¤¶ÈÀàÐÍÓÉÓÚÓй̶¨µÄ³¤¶È£¬ËùÒÔÈÝÒ×È·¶¨Ã¿Ìõ¼Ç¼µÄÆðʼµã£¬¿É¼Ó¿ìÊý¾Ý±íµÄÐÞ¸´ËÙ¶È¡£

      ÔÚMyISAMºÍISAM±íÖÐʹÓù̶¨³¤¶ÈÀàÐÍÊý¾ÝÁÐÓÐÖú¸ÄÉÆÊý¾Ý¿âÐÔÄÜ¡£

      ÔÚInnoDB±íÖУ¬¹Ì¶¨³¤¶ÈºÍ¿É±ä³¤¶ÈÊý¾ÝÁÐÀàÐͶ¼ÒÔÏàͬ·½Ê½´æ´¢£¬ËùÒԹ̶¨³¤¶ÈÊý¾ÝÁÐÀàÐͲ¢Ã»ÓÐÐÔÄÜÓÅÊÆ£¬·´¶øÓÉÓڿɶȳ¤¶ÈÊý¾ÝÁÐÀàÐÍÓÉÓÚÕ¼Óô洢¿Õ¼ä½ÏÉÙ£¬ËùÒÔ´¦ÀíËÙ¶È»á¿ìЩ¡£

    • ¿ÉË÷ÒýÀàÐÍÄܼӿìÊý¾ÝµÄ²éѯËÙ¶È¡£

    • Ã÷È·Ö¸¶¨Êý¾ÝÁеÄNOT NULLÊôÐÔ¿ÉʹMySQLÔÚ¼ìË÷¹ý³ÌÖв»ÓÃÈ¥ÅжÏÊý¾ÝÁÐÊÇ·ñÊÇNULL£¬ËùÒԿɼӿ촦ÀíËÙ¶È¡£

  • Êý¾ÝÈçºÎ½øÐбȽϣ¬ÊÇ·ñÇø·Ö´óСд¡£

  • ÊÇ·ñÒªÔÚÊý¾ÝÁÐÉϽ¨Á¢Ë÷Òý¡£

1.6. ±í´ïʽ²Ù×÷·û

Table 1.5. ËãÊõ²Ù×÷·û

²Ù×÷·ûÓï·¨º¬Òå
+a + bÏà¼Ó
-a - bÏà¼õ
-- aÇó¸º
*a * b³Ë·¨
/a / b³ý·¨
%a % bÇóÓà

Table 1.6. Âß¼­²Ù×÷·û

²Ù×÷·ûÓï·¨º¬Òå
AND »ò &&a AND b »ò a && bÂß¼­Ó룬ÈôÁ½¸ö²Ù×÷ÊýÍ¬Ê±ÎªÕæ£¬ÔòÎªÕæ
OR »ò ||a OR b »ò a || bÂß¼­»ò£¬Ö»ÒªÓÐÒ»¸ö²Ù×÷ÊýÎªÕæ£¬ÔòÎªÕæ
XOR a XOR bÂß¼­Òì»ò£¬ÈôÓÐÇÒ½öÓÐÒ»¸ö²Ù×÷ÊýÎªÕæ£¬ÔòÎªÕæ
NOT »ò £¡NOT a »ò !aÂß¼­·Ç£¬Èô²Ù×÷ÊýΪ¼Ù£¬ÔòÎªÕæ

Table 1.7. λ²Ù×÷·û

²Ù×÷·ûÓï·¨º¬Òå
&a & b°´Î»Ó룬Èô²Ù×÷ÊýͬλͬΪ1,Ôò¸ÃλΪ1
|a | b°´Î»»ò£¬Èô²Ù×÷ÊýͬλÓÐһλΪ1,Ôò¸ÃλΪ1
^a ^ b°´À­Òì»ò£¬Èô²Ù×÷Êýͬһλ·Ö±ðΪ1ºÍ0,Ôò¸ÃλΪ1
<<a << b°ÑaÖеĸ÷¸öλ×óÒÆb¸öλÖÃ
>>a >> b°ÑaÖеĸ÷¸öλÓÒÒÆb¸öλÖÃ

Table 1.8. ±È½Ï²Ù×÷·û

²Ù×÷·ûÓï·¨º¬Òå
=a = bÈôÁ½¸ö²Ù×÷ÊýÏàµÈ£¬ÔòÎªÕæ
<=>a <=> bÈôÁ½¸ö²Ù×÷ÊýÏàµÈ£¬ÔòÎªÕæ£¬¿ÉÓÃÓÚNULLÖµ±È½Ï
!= »ò <>a != b »ò a <> bÈôÁ½¸ö²ÙÓÃÊý²»µÈ£¬ÔòÎªÕæ
<a < bÈôaСÓÚb£¬ÔòÎªÕæ
<=a <= bÈôaСÓÚ»òµÈÓÚb£¬ÔòÎªÕæ
>a > bÈôa´óÓÚb£¬ÔòÎªÕæ
>=a > bÈôa´óÓÚ»òµÈÓÚb£¬ÔòÎªÕæ
INa IN (b1,b2,...)ÈôaµÈÓÚb1,b2,...ÖеÄijһ¸ö£¬ÔòÎªÕæ
BETWEENa BETWEEN b AND cÈôaÔÚbºÍcÖ®¼ä(°üÀ¨bºÍc)£¬ÔòÎªÕæ
NOT BETWEENa NOT BETWEEN b AND cÈôa²»ÔÚbºÍcÖ®¼ä(°üÀ¨bºÍc)£¬ÔòÎªÕæ
LIKEa LIKE bSQLģʽƥÅ䣬ÈôaÆ¥Åäb£¬ÔòÎªÕæ
NOT LIKEa NOT LIKE bSQLģʽƥÅ䣬Èôa²»Æ¥Åäb£¬ÔòÎªÕæ
REGEXPa REGEXP bÕýÔò±í´ïʽƥÅ䣬ÈôaÆ¥Åäb£¬ÔòÎªÕæ
NOT REGEXPa NOT REGEXP bÕýÔò±í´ïʽƥÅ䣬Èôa²»Æ¥Åäb£¬ÔòÎªÕæ
IS NULLa IS NULLÈôaΪNULL£¬ÔòÎªÕæ
IS NOT NULLa IS NOT NULLÈôa²»ÎªNULL£¬ÔòÎªÕæ
[Note]
LIKEģʽƥÅäÖеġ°%¡±Æ¥ÅäÈÎÒâ¸ö×Ö·û£¬¡°_¡±Æ¥ÅäÒ»¸ö×Ö·û¡£Æ¥Åä²»Çø·Ö´óСд×Ö·û¡£

Table 1.9. ²Ù×÷·ûÓÅÏȼ¶(ÓɸßÖÁµÍÅÅÁÐ)

²Ù×÷·û
BINARY£¬COLLATE
NOT¡¢£¡
^
XOR
-(Ò»ÔªÇ󸺲Ù×÷·û)¡¢~(һԪȡ·´²Ù×÷·û)
*¡¢/¡¢%
+¡¢-
<<¡¢>>
&
|
<¡¢<=¡¢=¡¢<=>¡¢!=¡¢<>¡¢>=¡¢>¡¢IN¡¢IS¡¢LIKE¡¢REGEXP¡¢RLIKE
BETWEEN¡¢CASE¡¢WHEN¡¢THEN¡¢ELSE
AND¡¢&&
OR¡¢||
:=

1.7. ÀàÐÍת»»

ÔÚMySQLµÄ±í´ïʽÖУ¬Èç¹ûij¸öÊý¾ÝÖµµÄÀàÐÍÓëÉÏÏÂÎÄËùÒªÇóµÄÀàÐͲ»Ïà·û£¬MySQLÔò»á¸ù¾Ý½«Òª½øÐеIJÙ×÷×Ô¶¯µØ¶ÔÊý¾ÝÖµ½øÐÐÀàÐÍת»»¡£È磺

1 + '2'      »áת»»³É1 + 2 = 3
1+ 'abc'     »áת»»³É1 + 0 = 1 ÓÉÓÚabc²»ÄÜת»»³ÉÈκεÄÖµ£¬ËùÒÔĬÈÏΪ0

MySQL»á¸ù¾Ý±í´ïʽÉÏÏÂÎĵÄÒªÇ󣬰Ñ×Ö·û´®ºÍÊýÖµ×Ô¶¯×ª»»ÎªÈÕÆÚºÍʱ¼äÖµ

¶ÔÓÚ³¬·¶Î§»ò·Ç·¨µÄÖµ£¬MySQLÒ²»á½øÐÐת»»£¬µ«×ª»»³öÀ´µÄ½á¹ûÊÇ´íÎóµÄ¡£³öÏÖ¸ÃÇé¿öʱ£¬MySQL»áÌáʾ¾¯¸æÐÅÏ¢£¬ÎÒÃǿɲ¶»ñ¸ÃÐÅÏ¢ÒÔ½øÐÐÏàÓ¦µÄ´¦Àí¡£

Chapter 2. ²éѯÓÅ»¯

Êý¾Ý¿âÊÇÊý¾ÝµÄ¼¯ºÏ£¬ÓëÊýѧµÄ¼¯ºÏÂÛÓÐÃܲ»¿É·ÖµÄ¹ØÏµ¡£

ΪÌá¸ß²éѯËÙ¶È£¬ÎÒÃÇ¿ÉÒÔ£º

  • ¶ÔÊý¾Ý±íÌí¼ÓË÷Òý£¬ÒÔ¼Ó¿ìËÑË÷ËÙ¶È£»

  • ͨ¹ý±à³Ì¼¼ÇÉ×î´óÏ޶ȵØÀûÓÃË÷Òý£»

  • ÓÅ»¯²éѯÓï¾ä£¬ÒÔʹ·þÎñÆ÷×î¿ìÏìÓ¦¶à¿Í»§µÄÇëÇó¡£

  • Ñо¿Ó²¼þ´¦Àí¹ý³Ì£¬¼õÉÙÎïÀíÔ¼Êø¡£

2.1. Ë÷Òý

Ë÷Òý¼¼ÊõÊǹØÏµÊý¾Ý²éѯÖÐ×îÖØÒªµÄ¼¼Êõ¡£Èç¹ûÒª¼ÓÌáÉýÊý¾Ý¿âµÄÐÔÄÜ£¬Ë÷ÒýÓÅ»¯ÊÇÊ×ÏÈÓ¦¸Ã¿¼Âǵġ£ÒòΪËüÄÜʹÎÒÃǵÄÊý¾Ý¿âµÃµ½×î´óÐÔÄÜ·½ÃæµÄÌáÉý¡£

Ë÷ÒýµÄÓŵ㣺

  • ûÓÐË÷ÒýµÄ±íÊÇûÓÐÅÅÐòµÄÊý¾Ý¼¯ºÏ£¬Èç¹ûÒª²éѯÊý¾ÝÐè½øÐÐÈ«±íɨÃè¡£ÓÐË÷ÒýµÄ±íÊÇÒ»¸öÔÚË÷ÒýÁÐÉÏÅÅÐòÁËÊý¾Ý±í£¬¿Éͨ¹ýË÷Òý¿ìËÙ¶¨Î»¼Ç¼¡£ÔÚMyISAMºÍISAMÊý¾Ý±íÖУ¬Êý¾ÝÐб£´æÔÚÊý¾ÝÎļþÖУ¬Ë÷Òý±£´æÔÚË÷ÒýÎļþÖС£BDBÓëInnoDBÊý¾Ý±í°ÑÊý¾ÝÓëË÷Òý·ÅÔÚͬһ¸öÎļþÖС£

  • ÔÚ¶à±í¹ØÁª²éѯÖУ¬Ë÷ÒýµÄ×÷Óþ͸ü´ó¡£Èç¹ûûÓÐË÷Òý£¬ÔÚ×µÄÇé¿öÏ£¬È«±íɨÃèµÄ´ÎÊý¿ÉÄÜÊǸ÷±íÊý¾ÝÐеÄ×éºÏ¸öÊý£¬¿ÉÄÜÊÇÒ»¸öÌìÎÄÊý×Ö¡£ÕâÑùµÄ²éѯÊÇÆÆ»µÐԵģ¬¿ÉÄÜ»áÔì³ÉÊý¾Ý¿â̱»¾¡£

  • ¶ÔÓÚʹÓÃÁËMIN()»òÊÇMAX()º¯ÊýµÄ²éѯ£¬Èç¹ûÏà¹ØµÄÊý¾ÝÁÐÉÏÓÐË÷Òý£¬MySQLÄÜÖ±½ÓÕÒµ½¸Ã×î´ó¡¢×îСֵµÄÐУ¬¸ù±¾²»ÓÃÒ»¸öÒ»¸öµØÈ¥¼ì²éÊý¾ÝÐС£

  • Ë÷Òý¼Ó¿ìORDER BY ºÍ GROUP BY×Ó¾äµÄ²Ù×÷¡£

  • µ±ÔÚÊýÖµÐÍÊý¾ÝÁÐÉϲéѯÊý¾Ý£¬¶ø¸ÃÁÐÓÐË÷Òý£¬Ë÷ÒýÄÜʹMySQL¸ù±¾²»ÓÃÈ¥¶ÁÈ¡Êý¾ÝÐУ¬Ö±½Ó´ÓË÷Òýȡֵ¡£

Ë÷ÒýµÄȱµã£º

  • Ë÷ÒýÐèÕ¼ÓôÅÅ̿ռ䡣

  • Ë÷Òý»á¼õÂýÔÚË÷ÒýÊý¾ÝÁÐÉϵIJåÈ롢ɾ³ýºÍÐ޸IJÙ×÷¡£

Ë÷ÒýÁеÄÑ¡Ôñ

  • Ë÷ÒýÓ¦¸Ã´´½¨ÔÚËÑË÷¡¢ÅÅÐò¡¢·Ö×éµÈ²Ù×÷ËùÉæ¼°µÄÊý¾ÝÁÐÉÏ¡£Ò²¾ÍÊÇ˵£¬ÔÚwhere×Ӿ䣬¹ØÁª¼ìË÷ÖеÄfrom×Ӿ䡢order by»ògroup by×Ó¾äÖгöÏÖ¹ýµÄÊý¾ÝÁÐ×îÊʺÏÓÃÀ´´´½¨Ë÷Òý¡£

  • ¾¡Á¿Ê¹ÓÃΨһË÷Òý£¬ËüÄÜʹË÷Òý·¢»Ó×îºÃµÄЧÄÜ¡£

  • ¾¡Á¿ÓñȽ϶̵ÄÖµ½øÐÐË÷Òý¡£µ±¶Ô×Ö·û´®½øÐÐË÷Òýʱ£¬Ó¦¸ÃÖ¸¶¨Ò»¸öǰ׺³¤¶È£¬±ÈÈç¶Ô×Ö·û´®µÄǰ10λ»ò20λµÄ×Ö·û½øÐÐÅÅÐò£¬¶ø²»ÓðÑÕû¸ö×Ö·û´®¼¸Ê®¸ö×Ö·ûÓÃÀ´Ë÷ÒýÅÅÐò¡£ÕâÑùÄܼõÉÙ´ÅÅÌI/O£¬Ìá¸ß´¦ÀíËÙ¶È¡£×îÖØÒªµÄÒ»µãÊÇ£¬¼üÖµÔ½¶Ì£¬Ë÷Òý»º³åÇøÀïÈÝÄɵļüÖµÒ²¾ÍÔ½¶à£¬¶øMySQLͬʱ±£´æÔÚÄÚ´æÀïµÄË÷ÒýÔ½¶à£¬Ë÷Òý»º³åÇøµÄÃüÖÐÂÊÒ²¾ÍÔ½¸ß¡£µ±È»£¬Ö»¶ÔÊý¾ÝÁеÚÒ»¸ö×Ö·û½øÐÐË÷ÒýÊÇûʲôÒâÒåµÄ¡£

  • ³ä·ÖÀûÓÃ×î×óǰ׺¡£Ëùν×î×óǰ׺Ҳ¾ÍÊÇÔÚ¸´ºÏË÷ÒýÖÐ×î±ßµÄË÷ÒýÁС£È縴ºÏË÷Òý(a,b,c) £¬ÆäÖÐa¾ÍÊÇ×î×óǰ׺¡£ËüÊÇʹÓÃÂÊ×î¸ßµÄË÷Òý£¬ÐèÈÏÕæÑ¡Ôñ¡£

  • ²»Òª½¨Ì«¶àË÷Òý£¬Ë÷ÒýÊÇ»áÏûºÄϵͳ×ÊÔ´µÄ£¬ÒªÊʿɶøÖ¹¡£

  • Ë÷ÒýÖ÷ÒªÓÃÓÚ<¡¢<=¡¢=¡¢>=¡¢>¡¢BETWEENµÈµÄ±È½Ï²Ù×÷ÖУ¬ËùÒÔË÷ÒýÓ¦¸Ã½¨Á¢ÔÚÓëÕâÑù²Ù×÷Ïà¹ØµÄÊý¾ÝÁÐÉÏ¡£

  • ÀûÓÃÂý²éѯÈÕÖ¾À´ÕÒ³öÐÔÄܲîµÄ²éѯ£¬Í¨¹ýmysqldumpslow¿É²é¿´¸ÃÈÕÖ¾¡£Õë¶ÔÐÔÄܲîµÄ²éѯ¿ÉÀûÓÃË÷ÒýÀ´¼Ó¿ì²éѯËÙ¶È¡£

2.2. ²éѯÓÅ»¯³ÌÐò

µ±ÎÒÃÇ·¢Ò»Ìõ²éѯÃüÁîʱ£¬MySQL·Ö¶ÔËü½øÐзÖÎö£¬ÒÔÓÅ»¯²éѯ¡£°ÑexplainÓïÃû·Åµ½²éÑ¯Ç°Ãæ¿ÉÏÔʾ²éѯµÄÖ´ÐзÏߣ¬¶ÔÓÅ»¯²éѯÌṩÓÐÓõÄÐÅÏ¢¡£ÒÔϼ¸¸öÔ­Ôò¿É°ïÖúϵͳÌôÑ¡ºÍʹÓÃË÷Òý£º

  • ¾¡Á¿¶ÔͬÀàÐ͵ÄÊý¾ÝÁнøÐбȽϡ£È磺VARCHAR(5)ºÍVARCHAR(5)ÊÇͬÀàÐ͵ģ¬CHAR(5)ºÍVARCHAR(5)ÊDz»Í¬ÀàÐ͵ġ£

  • ¾¡Á¿ÈÃË÷ÒýµÄÊý¾ÝÁÐÔڱȽϱí´ïʽÖе¥¶À³öÏÖ£¬²»Òª°ÑËü°üº¬ÔÚº¯Êý»ò¸´ÔÓ±í´ïʽ¡£·ñÔòË÷Òý»á²»Æð×÷Óá£

  • ¾¡Á¿²»ÒªÔÚLIKEģʽµÄ¿ªÍ·Ê¹ÓÃͨÅä·û¡£È磺%string%¡£

  • ¶ÔÓÚMyISAMºÍBDBÊý¾Ý±í£¬ÓÃANALYZE TABLEÓï¾äÈ÷þÎñÆ÷¶ÔË÷Òý¼üÖµµÄ·Ö²¼½øÐзÖÎö£¬ÎªÓÅ»¯³ÌÐòÌṩ¸üÓмÛÖµµÄÐÅÏ¢¡£ÁíÒ»¸ö·½·¨ÊÇÓÃmyisamchk --analyze(ÊÊÓÃÓÚMyISAM±í)»òisamchk --analyze(ÊÊÓÃÓÚISAM±í)ÃüÁî¡£

  • ÓÃEXPLAINÓï¾äÀ´·ÖÎö²éѯÓï¾äµÄÖ´ÐÐЧÂÊ¡£¼ì²é²éѯËùʹÓõÄË÷ÒýÊDz»ÊÇÄܹ»Ñ¸ËÙµØÅųý²»·ûºÏÌõ¼þµÄÊý¾ÝÐУ¬Èç¹û²»ÊÇ£¬¿ÉÒÔÊÔ×ÅÓÃSTRAIGHT_JOINÇ¿ÖÆ¸÷ÓйØÊý¾Ý±í°´Ö¸¶¨Ë³Ðò½øÐйØÁª¡£

  • ³¢ÊÔ²éѯµÄ²»Í¬Ð´·¨£¬±È½ÏÔËÐÐÇé¿ö¡£

  • ²»ÒªÀÄÓÃMySQLµÄÀàÐÍ×Ô¶¯×ª»»¹¦ÄÜ¡£×Ô¶¯×ª»»»á¼õÂý²éѯµÄËٶȲ¢»áʹÓйصÄË÷ÒýʧЧ¡£

2.3. Êý¾ÝÁÐÀàÐÍÓë²éѯЧÂÊ

Ñ¡ÓÃÊʵ±µÄÊý¾ÝÁÐÀàÐÍÓÐÖúÓÚÌá¸ß²éѯÃüÁîµÄÖ´ÐÐËÙ¶È£¬ÏÂÃæÊǼ¸µã¹ØÓÚÈçºÎÑ¡ÔñºÏÊÊÊý¾ÝÁÐÀàÐ͵Ľ¨Ò飺

  • ¾¡Á¿Ñ¡Óóߴç½ÏСµÄÊý¾ÝÁС£ÕâÑùÄܽÚÔ¼´ÅÅ̿ռäºÍ¼Ó¿ì²éѯËÙ¶È¡£Èç¹û½Ï¶ÌµÄÊý¾ÝÁÐÉϽ¨ÓÐË÷Òý£¬ÔòË÷ÒýµÄ´¦ÀíËÙ¶È»á½øÒ»²½Ìá¸ß¡£

  • Õë¶ÔÊý¾ÝÁÐÀàÐÍ£¬¾¡Á¿Ñ¡Ôñ×îÊÊÓõÄÊý¾Ý±íÀàÐÍ¡£Èç¹Ì¶¨³¤¶ÈÊý¾ÝÁÐÔÚMyISAM»òISAMÊý¾Ý±íÖеÄËÙ¶ÈÊÇ×î¿ìµÄ£¬ËùÒÔÔÚÕâÑùÊý¾Ý±íÖо¡Á¿Ê¹ÓÃcharÀàÐͶø²»ÊÇvarcharÀàÐÍÀ´±£´æ×Ö·û´®Êý¾Ý¡£¶ÔÓÚInnoDBÊý¾Ý±íÀàÐÍ£¬ÓÉÓÚvarcharÀàÐÍ¿ÉÓÐЧ¼õÉÙÕ¼Óÿռ䣬´Ó¶ø¼õÉÙ´ÅÅÌI/O£¬ËùÒÔʹÓÃvarcharÀàÐÍÊÇÓÐÀûµÄ¡£¶ÔÓÚBDBÀàÐÍÊý¾Ý±í£¬Ê¹Óö¨³¤ºÍ²»¶¨³¤ÁÐÀàÐ͵ÄÇø±ð¾Í²»´ó£¬¿ÉÈÎѡһÖÖ¡£

  • ¾¡Á¿°ÑÊý¾ÝÁÐÉùÃ÷ΪNOT NULL£¬ÒÔ½ÚÔ¼´æ´¢¿Õ¼äºÍ¼Ó¿ì´¦ÀíËÙ¶È¡£

  • ¶ÔÓÚȡֵ·¶Î§ÓÐÏÞµÄÊý¾ÝÁУ¬¿¼ÂÇʹÓÃENUMÊý¾ÝÁÐÀàÐÍ¡£ENUMÊý¾ÝÁÐÀàÐÍÔÚMySQLÖеĴ¦ÀíËÙ¶ÈÊǺܿ졣

  • ʹÓÃPROCEDURE ANALYSE()Óï¾äÀ´·ÖÎöÊý¾Ý±í£¬Ëü»á¶ÔÊý¾ÝÁеÄÉùÃ÷Ìá³ö½¨Ò飬ÎÒÃǿɸù¾Ý½¨Òé½øÐÐÐ޸ġ£

    select * from table_name PROCEDURE ANALYSE();
    select * from table_name PROCEDURE ANALYSE(16,256);    #(16,256)º¬ÒåÊÇ£ºÈç¹ûijÁеIJ»Í¬È¡ÖµÔÚ16¸öÒÔÉÏ»ò³¤¶È³¬¹ý256×Ö½Ú£¬¾Í²»Ìá³öʹÓÃENUMµÄ½¨Òé¡£
    
  • ÓÃOPTIMIZE TABLEÓï¾ä¶ÔÈÝÒ׳öÏÖË鯬µÄÊý¾Ý±í½øÐÐÕûÀí¡£°üº¬¿É±ä³¤Êý¾ÝÁеÄÊý¾Ý±í¶¼»á²úÉúË鯬£¬´Ó¶øÕ¼ÓöàÓàµÄ´ÅÅ̿ռäºÍÓ°Ïì²éѯËÙ¶È¡£ËùÒÔÒª¶¨ÆÚÔËÐÐOPTIMIZE TABLEÓï¾äÒÔ·ÀÖ¹Êý¾Ý±í²éѯÐÔÄܽµµÍ¡£µ«¸ÃÓï¾äÖ»¶ÔMyISAMÊý¾Ý±íÓÐЧ¡£¶Ô¸÷ÖÖÊý¾Ý±íͨÓõÄË鯬ÕûÀí·½·¨ÊÇÕâÑùµÄ£ºÏÈÓù¤¾ß³ÌÐòmysqldumpµ¼³öÊý¾Ý±í£¬ÔÙɾ³ýÊý¾Ý±íºóÖØ½¨£¬È磺

    $ mysqldump --opt db_name table_name > dump.sql
    $ mysql db_name < dump.sql
    
  • °Ñ·Ç½á¹¹»¯ºÍ±ä»¯´óµÄÊý¾Ý·ÅÔÚBLOBÊý¾ÝÁÐÀ¶¨ÆÚÓÃOPTIMIZE TABLEÃüÁîÓÅ»¯¡£

  • ÈËΪµØ¸øÊý¾Ý±íÔö¼ÓÒ»¸öÊý¾ÝÁУ¬ÒԳ䵱Ë÷Òý¡£×ö·¨ÊÇÕâÑùµÄ£¬Ïȸù¾ÝÊý¾Ý±íÀïµÄÆäËüÊý¾ÝÁмÆËã³öÒ»¸öÉ¢ÁÐÖµ£¬²¢±£´æÔÚÒ»¸öÊý¾ÝÁÐÀȻºóͨ¹ýËÑË÷É¢ÁÐÖµÀ´¼ìË÷Êý¾ÝÐС£×¢Ò⣬¸Ã¼¼ÇÉÖ»ÊÊÓÃÓÚ¾«È·Æ¥ÅäÐͲéѯ¡£É¢ÁÐÖµÔÚ´óÓÚ£¬Ð¡ÓڵȵIJÙ×÷Öв»Æð×÷Óá£É¢ÁÐÖµ¿ÉÒÔMD5()(ÊÊÓÃÓÚ3.23¼°ÒÔÉϰ汾)£¬SHA1()(ÊÊÓÃÓÚ4.0.1¼°ÒÔÉϰ汾)£¬CRC32()(ÊÊÓÃÓÚ4.1¼°ÒÔÉϰ汾)µÈº¯ÊýÉú³É¡£Ê¹ÓÃÉ¢ÁÐÖµÖ§¼ìË÷BLOBºÍTEXTÖµµÄ×ö·¨±ÈÖ±½Ó¼ìË÷BLOBºÍTEXT±¾ÉíµÄ×ö·¨¿ì¡£

  • ¾¡Á¿±ÜÃâ¶Ô´ó³ß´çµÄBLOBÖµ½øÐмìË÷¡£Èç¹ûÒª¼ìË÷¶¼Ó¦¸Ãͨ¹ýËüµÄÉÏÃæÌᵽɢÁÐÖµÏȽøÐÐɸѡ¡£¶ø²»Ó¦¸ÃäĿµØÔÚÍøÂçÖд«ËÍ´óÁ¿BLOBÖµ¡£

  • Èç¹û°ÑBLOBÖµ°þÀëµ½ÁíÍâÒ»¸öÊý¾Ý±íÀïÈ¥£¬¿ÉʵÏÖÊý¾Ý±íÖÐÆäËüÊý¾ÝÁÐת±ä³É¹Ì¶¨³¤¶ÈÊý¾ÝÁеϰ¡£¾Í¼´¿É¼õÉÙÊý¾Ý±íË鯬£¬ÓÖ¿ÉʹÔÚԭʼ±íÖеÄselect *²éѯ²»»á°Ñ´ó³ß´çµÄBLOBÖµ²»±ØÒªµØÍ¨¹ýÍøÂç´«ËÍ¡£

2.4. ÓÐЧµØ¼ÓÔØÊý¾Ý

ÓÐʱÎÒÃÇÐè´óÁ¿µØ°ÑÊý¾Ý¼ÓÔØµ½Êý¾Ý±í£¬²ÉÓÃÅúÁ¿¼ÓÔØµÄ·½Ê½±ÈÒ»¸öÒ»¸ö¼Ç¼¼ÓÔØÐ§Âʸߣ¬ÒòΪMySQL²»ÓÃÿ¼ÓÔØÒ»Ìõ¼Ç¼¾ÍË¢ÐÂÒ»´ÎË÷Òý¡£ÏÂÃæ½éÉܼ¸¸öÓÐÖúÓÚ¼Ó¿ìÊý¾Ý¼ÓÔØµÄ²Ù×÷£º

  • ʹÓÃLOAD DATAÓï¾äÒª±ÈINSERTÓï¾äµÄ¼ÓÔØËٶȿ졣

  • LOAD DATA±ÈLOAD DATA LOCALÓï¾äµÄЧÂʸߡ£Ç°Õß¿ÉÓÉ·þÎñÆ÷Ö±½Ó´Ó±¾µØ´ÅÅ̶ÁÈ¡¼ÓÔØÊý¾Ý£¬ºóÕßÐèÓɿͻ§³ÌÐòÈ¥¶ÁÈ¡Îļþ²¢Í¨¹ýÍøÂç´«Ë͵½·þÎñÆ÷¡£

  • Èç¹ûÒ»¶¨ÒªÓÃINSERTÓï¾ä£¬Ó¦¾¡Á¿ÔÚÒ»ÌõÓï¾äÖвåÈë¶à¸öÊý¾ÝÐС£

  • Èç¹û±ØÐëʹÓöàÌõINSERTÓï¾ä£¬ÔòÓ¦¾¡Á¿°ÑËüÃǼ¯ÖÐÔÚÒ»Æð·Åµ½Ò»¸öÊÂÎñÖнøÐд¦Àí£¬¶ø²»ÊÇÔÚ×Ô¶¯ÌύģʽÏÂÖ´ÐÐËüÃÇ£ºÈ磺

    BEGIN;
    INSERT INTO table_name values (...);
    INSERT INTO table_name values (...);
    INSERT INTO table_name values (...);
    ...
    COMMIT;
    

    ¶ÔÓÚ²»Ö§³ÖÊÂÎñµÄ±í£¬Ó¦¶Ô±í½øÐÐÐ´Ëø¶¨£¬È»ºóÔÚ±íËø¶¨ÆÚ¼ä¶Ô±í½øÐÐINSERT²Ù×÷£¬È磺

    LOCK TABLES table_name WRITE;
    INSERT INTO table_name ...;
    INSERT INTO table_name ...;
    INSERT INTO table_name ...;
    ...
    UNLOCK TABLES;
    
  • ÀûÓÿͻ§/·þÎñÆ÷ͨÐÅЭÒéÖеÄѹËõ¹¦ÄÜÒÔ¼õÉÙÍøÂç´«ÊäµÄÊý¾ÝÁ¿¡£µ«¸ÃѹËõ»áÏûºÄ´óÁ¿µÄϵͳ×ÊÔ´£¬ËùÒÔСÐÄʹÓá£

  • ¾¡Á¿ÈÃMySQL²åÈëĬÈÏÖµ¡£²»ÒªÔÚINSERTÖÐд̫¶àÖµ£¬ÒÔ¼õÉÙÍøÂç´«ÊäÁ¿ºÍ·þÎñÆ÷¶ËµÄÓï·¨·ÖÎöʱ¼ä¡£

  • ¶ÔÓÚMyISAMºÍISAMÊý¾Ý±í£¬Èç¹ûÐè¼ÓÔØ´óÁ¿Êý¾Ý£¬Ó¦ÏȽ¨Á¢Ò»¸öûË÷ÒýµÄ±í£¬¼ÓÔØÊý¾ÝºóÔÙ´´½¨Ë÷Òý¡£¸Ã·½·¨²»ÊÊÓÃÓÚInnoDB»òBDBÊý¾Ý±í¡£

½ûÓúÍÖØÐ¼¤»îË÷ÒýµÄ·½·¨ÓÐÁ½ÖÖ£º

  • ʹÓÃALTER TABLEÓï¾äµÄDISABLE KEYSºÍENABLE KEYSÃüÁÈ磺

    ALTER TABLE table_name DISABLE KEYS;
    ALTER TABLE table_name ENABLE KEYS;
    
  • ʹÓÃmyisamchk»òisamchk¹¤¾ß¡£È磺

    $ myisamchk --keys-used=0 table_name                   #½ûÖ¹
    $ myisamchk --recover --quick --key-used=n table_name  #¼¤»î
    nÊÇÓÃÀ´±íÃ÷ÐèÒª¼¤»îË÷ÒýµÄλÑÚÂ룬µÚ0λ¶ÔÓ¦µÚÒ»¸öË÷Òý£¬Èç¹ûÓÐÈý¸öË÷Òý£¬nÖµ¾ÍÊÇ7(¶þ½øÖÆ111)¡£Ë÷Òý±àºÅ¿ÉÒÔÏÂÃüÁîÈ·¶¨£º
    $ myisamchk --description table_name
    

2.5. µ÷¶ÈºÍËø¶¨

Ôںܶà¿Í»§Ò»Æð²éѯÊý¾Ý±íʱ£¬Èç¹ûʹ¿Í»§ÄÜ×î¿ìµØ²éѯµ½Êý¾Ý¾ÍÊǵ÷¶ÈºÍËø¶¨×öµÄ¹¤×÷ÁË¡£ÔÚMySQLÖУ¬ÎÒÃǰÑselect²Ù×÷½Ð×ö¶Á£¬°Ñ¶ÔÊý¾Ý±íÐÞ¸ÄÔö¼ÓµÄ²Ù×÷(INSERT,UPDATE,REPLACE...)½Ð×öд¡£MySQLµÄ»ù±¾µ÷¶È²ßÂÔ¿ÉÒÔ¹éÄÉΪÒÔÏÂÁ½Ìõ£º

  • дÈëÇëÇ󽫰´ËüÃǵ½´ï·þÎñÆ÷µÄ˳Ðò½øÐд¦Àí£»

  • д²Ù×÷µÄÓÅÏȼ¶Òª¸ßÓÚ¶Á²Ù×÷¡£

MyISAMºÍISAMÊý¾Ý±íµÄµ÷¶È²ßÂÔÊÇÔÚÊý¾Ý±íËøµÄ°ïÖúÏÂʵÏֵģ¬ÔÚ¿Í»§³ÌÐòÒª·ÃÎÊÊý¾Ý±í֮ǰ£¬Ðè»ñµÃÏàÓ¦µÄËø£¬ÔÚÍê³É¶ÔÊý¾Ý±íµÄ²Ù×÷ºó£¬ÔÙÊͷŸÃËø¡£ËøµÄ¹ÜÀíͨ³£ÓÉ·þÎñÆ÷¹ÜÀí£¬Ò²¿ÉÈËΪµØÓÃLOCK TABLESºÍUNLOCK TABLESÃüÁîÀ´ÉêÇëºÍÊÍ·ÅËø¡£Ð´²Ù×÷ʱ£¬ÐèÒªÉêÇëÒ»¸ö¶ÀÕ¼ÐÔµÄËø£¬Ò²¾ÍÊÇ˵ÔÚд²Ù×÷Æä¼ä£¬¸Ã±íÖ»ÄÜÓÉд²Ù×÷µÄ¿Í»§Ê¹Ó᣶Á²Ù×÷ʱ£¬¿Í»§±ØÐëÉêÇëÒ»¸öÔÊÐíÆäËû¿Í»§¶ÔÊý¾Ý±í½øÐÐд²Ù×÷µÄËø£¬ÒÔÈ·±£¿Í»§ÔÚ¶ÁµÄ¹ý³ÌÖÐÊý¾Ý±í²»»á·¢Éú¸Ä±ä¡£µ«¶Á²Ù×÷Ëø²»ÊǶÀÕ¼µÄ£¬¿ÉÓжà¸ö¶Á²Ù×÷ͬʱ×÷ÓÃÓÚͬһ¸öÊý¾Ý±í¡£

ͨ¹ýһЩÐÞÊηû¿ÉÓ°Ïìµ÷¶È²ßÂÔ£¬ÈçLOW_PRIORITY(ÓÃÓÚDELETE,INSERT,LOAD DATA,REPLACE,UPDATEÓï¾ä)¡¢HIGH_PRIORITY(ÓÃÓÚSELECTÓï¾ä)¡¢DELAYED(ÓÃÓÚINSERTºÍREPLACEÓï¾ä)¡£ËüÃǵÄ×÷ÓÃÊÇÕâÑùµÄ£º

  • LOW_PRIORITY»áʹд²Ù×÷µÄÓÅÏȼ¶½µµÍµ½¶Á²Ù×÷ÒÔÏ£¬Ò²¾ÍÊÇ˵¶Á²Ù×÷»á×èÈû¸Ã¼¶±ðµÄд²Ù×÷£¬SELECTµÄHIGH_PRIORITYÓÐÀàËÆµÄ×÷Óá£

  • INSERTÓï¾äÖеÄDELAYEDÐÞÊλáʹ²åÈë²Ù×÷±»·ÅÈëÒ»¸ö¡°ÑÓ³Ù²åÈ롱¶ÓÁС£²¢·µ»Ø×´Ì¬ÐÅÏ¢¸ø¿Í»§£¬Ê¹¿Í»§³ÌÐò¿ÉÔÚÐÂÊý¾ÝÐл¹Ã»²åÈëµ½Êý¾Ý±í֮ǰ¼ÌÐøÖ´ÐкóÃæµÄ²Ù×÷¡£Èç¹ûÒ»Ö±Óпͻ§¶Á¸ÃÊý¾Ý±í£¬ÐÂÊý¾ÝÐлáÒ»Ö±´ýÔÚ¶ÓÁÐÖУ¬Ö±µ½Êý¾Ý±íûÓжÁ²Ù×÷ʱ£¬·þÎñÆ÷²Å»á°Ñ¶ÓÁÐÖеÄÊý¾ÝÐÐÕæÕý²åÈëµ½Êý¾Ý±íÖС£¸ÃÓï¾ä¿ÉÓÃÔÚÒÔϳ¡ºÏ£¬ÔÚÒ»¸öÓÐÈß³¤²éѯµÄÊý¾Ý±íÖвåÈëÊý¾Ý£¬¶øÄãÓÖ²»Ïë±»×èÈû£¬Äã¾Í¿É·¢³öINSERT DELAYEDÓï¾ä£¬°Ñ²åÈë²Ù×÷·ÅÈë·þÎñÆ÷¡°ÑÓ³Ù²åÈ롱¶ÓÁУ¬ÄãÎÞÐèµÈ´ý¾ÍÂíÉϿɽøÐнÓÏÂÀ´µÄ²Ù×÷¡£

  • µ±Ò»¸öÊý¾Ý±íÀï´Óδ½øÐйýɾ³ý²Ù×÷»ò¸Õ¸Õ¶ÔËü½øÐйýË鯬ÕûÀíµÄÇé¿öÏ£¬ÓÃINSERTÓï¾ä²åÈëµÄÊý¾ÝÐÐÖ»»á±»Ìí¼Óµ½Êý¾Ý±íµÄĩ⣬¶ø²»»á²åÈëµ½Êý¾Ý±íµÄÖмäλÖá£ÕâÑù£¬¶ÔÓÚMyISAM±í£¬MySQLÔÊÐíÔÚÓÐÆäËü¿Í»§ÕýÔÚ¶Á²Ù×÷µÄʱ¼ä½øÐÐд²Ù×÷¡£ÎÒÃdzÆÖ®Õâ²¢·¢²åÈ롣ҪʹÓøü¼ÇÉ£¬Ðè×¢ÒâÒÔÏÂÁ½¸öÎÊÌ⣺

    • ²»ÒªÔÚINSERTÓï¾äÖÐʹÓÃLOW_PRIORITYÐÞÊηû¡£

    • ¶Á²Ù×÷Ó¦ÓÃLOCK TABLES ... READ LOCAL¶ø²»ÊÇÓÃLOCK TABLES ... READÓï¾äÀ´½øÐÐÊý¾Ý±í¶ÁËø¶¨¡£LOCAL¹Ø¼ü×ÖÖ»¶ÔÊý¾Ý±íÖÐÒÑ´æÔÚÐнøÐÐËø¶¨£¬²»»á×èÈû°ÑÐÂÐÐÌí¼Óµ½Êý¾Ý±íĩβ¡£

BDBÊý¾Ý±íʹÓÃÒ³Ãæ¼¶²Ù×÷Ëø£¬InnoDBÊý¾Ý±íʹÓÃÊý¾ÝÐм¶²Ù×÷Ëø¡£ËùÒÔÕâÁ½ÖÖ±íµÄ²¢·¢ÐÔ±ÈMyISAMºÍISAMÊý¾Ý±íÕâÖÖ±í¼¶ËøµÄ²¢·¢ÐÔ»áºÃºÜ¶à¡£ÆäÖÐInnoDBµÄ²¢·¢ÐÔ×îºÃ¡£×ÛÉÏËùÊö£¬ÎÒÃǿɵóöÒÔϽáÂÛ£º

  • MyISAMºÍISAMÊý¾Ý±íµÄ¼ìË÷ËÙ¶È×î¿ì£¬µ«Èç¹ûÔÚ¼ìË÷ºÍÐ޸IJÙ×÷½Ï¶àµÄ³¡ºÏ£¬»á³öËø¾ºÕùµÄÎÊÌ⣬Ôì³ÉµÈ´ýʱ¼äÑÓ³¤¡£

  • BDBºÍInnoDBÊý¾Ý±íÄÜÔÚÓдóÁ¿Ð޸IJÙ×÷µÄ»·¾³ÏÂÌṩºÜºÃµÄ²¢·¢ÐÔ£¬´Ó¶øÌṩ¸üºÃµÄÐÔÄÜ¡£

  • MyISAMºÍISAMÊý¾Ý±íÓÉÓÚ½øÐÐ±í¼¶Ëø¶¨£¬ËùÒÔ²»»á³öÏÖËÀËøÏÖÏó£¬BDBºÍInnoDBÊý¾Ý±íÔò´æÔÚËÀËøµÄ¿ÉÄÜÐÔ¡£

2.6. ·þÎñÆ÷ÓÅ»¯

ÓÅ»¯Ô­Ôò£º

  • ÄÚ´æÀïµÄÊý¾ÝÒª±È´ÅÅÌÉϵÄÊý¾Ý·ÃÎÊÆðÀ´¿ì£»

  • Õ¾Êý¾Ý¾¡¿ÉÄܳ¤Ê±¼äµØÁôÔÚÄÚ´æÀïÄܼõÉÙ´ÅÅ̶Áд»î¶¯µÄ¹¤×÷Á¿£»

  • ÈÃË÷ÒýÐÅÏ¢ÁôÔÚÄÚ´æÀïÒª±ÈÈÃÊý¾Ý¼Ç¼µÄÄÚÈÝÁôÔÚÄÚ´æÀï¸üÖØÒª¡£

Õë¶ÔÒÔÉϼ¸¸öÔ­Ôò£¬ÎÒÃÇÓ¦¸Ãµ÷Õû·þÎñÆ÷£º

  • Ôö¼Ó·þÎñÆ÷µÄ»º´æÇøÈÝÁ¿£¬ÒÔ±ãÊý¾ÝÔÚÄÚ´æÔÚÍ£ÁôµÄʱ¼ä³¤Ò»µã£¬ÒÔ¼õÉÙ´ÅÅÌI/0¡£ÏÂÃæ½éÉܼ¸¸öÖØÒªµÄ»º³åÇø£º

    • Êý¾Ý±í»º³åÇø´æ·Å×ÅÓë´ò¿ªµÄÊý¾Ý±íÏàµÄÐÅÏ¢£¬ËüµÄ´óС¿ÉÓÉ·þÎñÆ÷²ÎÊý¡°table_cache¡±ÉèÖá£Opened_tables²ÎÊý¼Ç¼·þÎñÆ÷½øÐйý¶àÉÙ´ÎÊý¾Ý±í´ò¿ª²Ù×÷£¬Èç¹û¸ÃÖµ±ä»¯ºÜ´ó£¬¾Í¿ÉÄÜÊÇÊý¾Ý±í»º³åÇøÒÑÂú£¬Ðè°ÑһЩ²»³£ÓõıíÒÆ³ö»º³åÇø£¬ÒÔÌÚ³ö¿Õ´ò¿ªÐµÄÊý¾Ý±í¡£¿ÉÓÃÒÔÏÂÃüÁî²é¿´Opened_tablesµÄÖµ£º

      SHOW STATUS LIKE 'Opened_tables';
      
    • ÔÚMyISAMºÍISAMÊý¾Ý±íÖУ¬Ë÷Òý±»»º´æÔÚ¡°key buffer¡±ÀËüµÄ´óСÓÉ·þÎñÆ÷²ÎÊý¡°key_buffer_size¡±À´¿ØÖÆ¡£ÏµÍ³Ä¬ÈϵĴóСÊÇ8M£¬Èç¹ûÄÚ´æ³ä×ãµÄ»°¿ÉÊʵ±À©´ó¸ÃÖµ£¬ÒÔʹ¸ü¶àË÷Òý¿é»º´æÔÚ¸ÃÇøÀÒÔ¼Ó¿ìË÷ÒýµÄËÙ¶È¡£

    • InnoDBºÍBDBÊý¾Ý±íÒ²¸÷ÓÐÒ»¸ö»º³åÇø£¬·Ö±ð½Ðinnodb_buffer_pool_sizeºÍbdb_cache_size¡£InnoDB»¹ÓÐÒ»¸öÈÕÖ¾»º³åÇø½Ðinnodb_log_buffer_size¡£

    • ×Ô4.0.1¿ªÊ¼£¬MySQL¶àÁËÒ»¸ö»º³åÇø£¬½Ð²éѯ»º³åÇø£¬Ö÷ÒªÓÃÀ´´æ·ÅÖØ¸´Ö´ÐеIJéѯÎı¾ºÍ½á¹û£¬µ±ÔÙ´ÎÓöµ½ÏàͬµÄ²éѯ£¬·þÎñÆ÷»áÖ±½Ó´Ó»º³åÇøÖзµ»Ø½á¹û¡£¸Ã¹¦ÄÜÊÇÄÚ½¨µÄ¹¦ÄÜ£¬Èç²»ÏëÖ§³Ö¸Ã¹¦ÄÜ£¬¿ÉÔÚ±àÒë·þÎñÆ÷ʱÓÃconfigure½Å±¾µÄ--without-query-cacheÑ¡ÏîÈ¥µô¸Ã¹¦ÄÜ¡£

      ²éѯ»º³åÇøÓÉÈý¸ö·þÎñÆ÷²ÎÊý¿ØÖÆ£¬·Ö±ðÊÇ£º

      1¡¢query_cache_size    
      ¿ØÖÆ»º³åÇøµÄ´óС£¬Èç¹û¸ÃֵΪ0,Ôò½ûÓòéѯ»º³å¹¦ÄÜ¡£ÉèÖ÷½·¨ÊÇÔÚÑ¡ÏîÎļþÖÐÉèÖÃ:
      [mysqld]
      set-variable = query_cache_size = 16M     
      ÕâÑù¾ÍÉèÖÃÁËÒ»¸ö16MµÄ²éѯ»º³åÇø
      
      2¡¢query_cache_limit
      »º³å½á¹û¼¯µÄ×î´óÈÝÁ¿(ÒÔ×Ö½ÚΪµ¥Î»)£¬Èç¹û²éѯµÄ½á¹û¼¯´óÓÚ¸ÃÖµ£¬Ôò²»»º³å¸ÃÖµ¡£
      
      3¡¢query_cache_type
      »º³åÇøµÄ²Ù×÷ģʽ¡£
      0±íʾ²»½øÐлº³å£»
      1±íʾ³ýSELECT SQL_NO_CACHE¿ªÍ·µÄ²éѯÍ⣬ÆäÓàµÄ¶¼»º³å£»
      2±íʾֻ¶ÔÒÔSELECT SQL_ON_CACHE¿ªÍ·µÄ²éѯ½øÐлº³å¡£
      

      ĬÈÏÇé¿öÏ£¬°´·þÎñÆ÷µÄÉèÖýøÐлº³å£¬µ«¿Í»§¶ËÒ²¿Éͨ¹ýÃüÁî¸Ä±ä·þÎñÆ÷ÉèÖ᣿ͻ§¶Ë¿ÉÖ±½ÓÓÃSELECT SQL_NO_CACHEºÍSELECT SQL_CACHEÃüÁîÀ´ÒªÇó·þÎñÆ÷»º³å»ò²»»º³å²éѯ½á¹û¡£Èç¹û²»ÏëÿÌõ²éѯ¶¼Ð´²ÎÊý£¬ÎÒÃÇÒ²¿ÉÔÚ¿Í»§¶ËÓÃSET SQL_QUERY_CACHE_TYPE = val;À´¸Ä±ä·þÎñÆ÷µÄ²éѯ»º³åÐÐΪ¡£val¿Éȡֵ0£¬1,2»òOFF£¬ON£¬»òDEMAND¡£

  • ½ûÓÃÓò»×ŵÄÊý¾Ý±í´¦Àí³ÌÐò¡£Èç·þÎñÆ÷ÊÇ´ÓÔ´Âë´´½¨£¬¾Í¿É³¹µ×½ûÓÃISAM£¬InnoDBºÍBDBÊý¾Ý±í¡£

  • ȨÏÞ±íÀïµÄȨÏÞ¹ØÏµÓ¦¾¡¿ÉÄܼòµ¥£¬µ±È»ÁË£¬ÊÇÒªÔÚ±£Ö¤°²È«µÄǰÌáÏ¡£

  • ÔÚ´ÓÔ´Âë´´½¨·þÎñÆ÷ʱ£¬¾¡Á¿Ê¹Óþ²Ì¬¿â¶ø²»Êǹ²Ïí¿âÀ´Íê³ÉÆäÅäÖù¤×÷¡£¾²Ì¬¿âµÄÖ´ÐÐËٶȸü¿ì£¬µ«Èç¹ûÒª¼ÓÔØÓû§¶¨Ò庯Êý(UDF)µÄ»°£¬¾Í²»ÄÜʹÓþ²Ì¬¿â£¬ÒòΪUDF»úÖÆ±ØÐëÒÀÀµ¶¯Ì¬¿â²ÅÄÜʵÏÖ¡£

2.7. Ó²¼þÓÅ»¯

ΪÁËÌá¸ßÊý¾ÝÔËÐÐËÙ¶È£¬Éý¼¶Ó²¼þÊÇ×îÖ±½ÓµÄ½â¾ö·½°¸¡£Õë¶ÔÊý¾Ý¿âÓ¦ÓõÄÌØµã£¬ÔÚÉý¼¶Ó²¼þʱӦ¿¼ÂÇÒÔÏÂÄÚÈÝ£º

  • ¶ÔÓÚÊý¾Ý¿â·þÎñÆ÷£¬ÄÚ´æÊÇ×îÖØÒªµÄÒ»¸öÓ°ÏìÐÔÄÜÒòËØ¡£Í¨¹ý¼Ó´óÄڴ棬Êý¾Ý¿â·þÎñÆ÷¿É°Ñ¸ü¶àµÄÊý¾Ý±£´æÔÚ»º³åÇø£¬¿É´ó´ó¼õÉÙ´ÅÅÌI/O£¬´Ó¶øÌáÉýÊý¾Ý¿âµÄÕûÌåÐÔÄÜ¡£

  • ÅäÖøßËÙ´ÅÅÌϵͳ£¬ÒÔ¼õÉÙ¶ÁÅ̵ĵȴýʱ¼ä£¬Ìá¸ßÏìÓ¦ËÙ¶È¡£

  • ºÏÀí·Ö²¼´ÅÅÌI/O£¬Ó¦°Ñ´ÅÅÌI/O·ÖÉ¢ÔÚ¶à¸öÉ豸ÉÏ£¬ÒÔ¼õÉÙ×ÊÔ´¾ºÕù£¬Ìá¸ß²¢ÐвÙ×÷ÄÜÁ¦¡£

  • ÅäÖöദÀíÆ÷£¬MySQLÊǶàÏ̵߳ÄÊý¾Ý¿â£¬¶à´¦ÀíÆ÷¿ÉͬʱִÐжà¸öÏ̡߳£

Chapter 3. Êý¾Ý¿â¹ÜÀí

Êý¾Ý¿âÊÇÒ»¸ö¸´ÔÓ¶øÓֹؼüµÄϵͳ£¬ÎªÈ·±£ÏµÍ³°²È«¡¢¸ßЧÔËÐУ¬ÐèÊìϤÊý¾Ý¿âÄÚ²¿µÄÔË×÷»úÖÆ£¬ÕÆÎÕ¸÷ÖÖά»¤¹¤¾ß£¬²¢×öºÃÈÕ³£µÄ¹ÜÀí¹¤×÷¡£ÏÂÃæÁоټ¸ÏîÖ÷Òª¹¤×÷Ö°Ôð£º

  • ·þÎñÆ÷µÄ¹Ø±ÕºÍÆô¶¯£»

  • ¹ÜÀíÓû§Õʺţ»

  • ¹ÜÀíÈÕÖ¾Îļþ£»

  • Êý¾Ý¿â±¸·Ý»Ö¸´£»

  • Êý¾Ý¿âÓÅ»¯£»

  • È·±£Êý¾Ý¿âÊý¾Ý°²È«£»

  • Êý¾Ý¿âÈí¼þÉý¼¶¡£

3.1. Êý¾ÝĿ¼

Êý¾ÝĿ¼ÊÇÓÃÀ´´æ·ÅÊý¾Ý±íºÍÏà¹ØÐÅÏ¢µÄµØ·½£¬ÊÇÊý¾Ý¿âµÄºËÐÄ¡£ÔÚMySQLÖеÄÊý¾ÝĿ¼¸ù¾Ý²»Í¬Æ½Ì¨µÄÓÐһЩ²îÒ죺

  • ÔÚUNIX/LinuxϵͳÉÏ£¬Èç¹ûÓÃÔ´Âë±àÒë°²×°£¬Êý¾ÝĿ¼µÄλÖÃĬÈÏÊÇÔÚ/usr/local/mysql/varÖУ»

  • ÔÚUNIX/LinuxϵͳÉÏ£¬Èç¹ûÓöþ½øÖÆ·¢Ðа氲װ£¬Êý¾ÝĿ¼µÄλÖÃĬÈÏÊÇÔÚ/usr/local/mysql/dataÖУ»

  • ÔÚWINDOWSϵͳÉÏ£¬Êý¾ÝĿ¼µÄλÖÃĬÈÏÊÇÔÚc:/mysql/dataÖУ»

[Note]
ÔÚ·þÎñÆ÷Æô¶¯Ê±£¬¿ÉÓÃ--datadir=dir_nameÀ´Ö¸¶¨Êý¾ÝĿ¼£¬Ò²¿É°ÑËüдµ½ÅäÖÃÎļþÖС£

ÎÒÃÇ»¹¿ÉÓÃÃüÁîÏò·þÎñÆ÷²éѯÊý¾ÝĿ¼µÄλÖã¬Êý¾ÝĿ¼µÄ±äÁ¿ÃûÊÇdatadir£¬È磺

  • % mysqladmin variables

    Èç¹ûÔÚһ̨»úÆ÷ÉÏͬʱÔËÐжà¸ö·þÎñÆ÷£¬Ôò¿É¸ù¾Ý¶Ë¿ÚµÄ²»Ê±À´²éѯÿ¸ö·þÎñÆ÷µÄÊý¾ÝĿ¼£¬È磺

    % mysqladmin --host=127.0.0.1 --port=port_number variables

    Èç¹û--hostÊÇlocalhost£¬ÏµÍ³Ôò»áÓÃÒ»¸öUNIXÌ×½Ó×ÖÈ¥Á¬½ÓÊý¾Ý¿â·þÎñÆ÷£¬ÕâʱҪʹÓÃ--socketÑ¡ÏËùÒÔ²éѯÓï¾ä±ä³É£º

    % mysqladmin --host=localhost --socket=/path/to/socket variables
  • mysql> SHOW VARIABLES LIKE 'datadir';
  • ÔÚwindows NTƽ̨ÉÏ¿ÉÒÔʹÓá°.¡±×÷ΪһÌõÃüÃû¹ÜµÀÁ¬½ÓµÄÖ÷»úÃû£¬ÓÃ--socketÑ¡Ïî¸ø³öÃüÃû¹ÜµÀµÄÃû×Ö£¬È磺

    c:\ mysqladmin --host=. --socket=pipe_name variables
  • ÅäÖÃÎļþµÄÖÐ[mysqld]¶ÎÖеÄdatadir=/path/to/datadirÉèÖÃÒ²¿É²éѯµ½Êý¾ÝĿ¼¡£

  • ÔÚmysqld³ÌÐòµÄ°ïÖúÐÅÏ¢ÀïÒ²ÓгÌÐò±àÒëʱĬÈϵÄÊý¾ÝĿ¼ÐÅÏ¢£¬¿ÉÓÃÒÔÏÂÃüÁîÏÔʾ£º

    % mysqld --help

Êý¾ÝĿ¼ÊÇ´æ·ÅÊý¾ÝÎļþµÄµØ·½£¬Ã¿¸öÊý¾Ý¿â¶ÔӦĿ¼µÄ²»Í¬Îļþ¡£InnoDBÊý¾Ý±íÓÉÓÚÓñí¿Õ¼äÀ´¹ÜÀíÊý¾Ý¿â£¬ËùÒÔ¾ÍûÕâÖÖ¶ÔÓ¦¹ØÏµ¡£µ«Ò²ÊDZ£´æÔÚÊý¾ÝĿ¼Öеģ¬ÔÚÊý¾ÝĿ¼³ý±£´æÊý¾Ý¿âÎļþÍ⣬»¹¿ÉÄܻᱣ´æÒÔϼ¸ÀàÎļþ£º

  • ·þÎñÆ÷µÄÅäÖÃÎļþ£¬my.cnf£»

  • ·þÎñÆ÷µÄ½ø³ÌID(PID)Îļþ£»

  • ·þÎñÆ÷µÄÈÕÖ¾ÎļþºÍ״̬Îļþ£¬ÕâЩÎļþ¶Ô¹ÜÀíÊý¾Ý¿âÓÐÖØÒªµÄ¼ÛÖµ£»

  • DESÃÜÔ¿Îļþ»ò·þÎñÆ÷µÄSSLÖ¤ÊéÓëÃÜÔ¿Îļþ¡£

Êý¾ÝĿ¼ÖеÄËùÓÐÊý¾Ý¿âÈ«²¿ÓÉ·þÎñÆ÷(mysqld)À´¹ÜÀí£¬¿Í»§¶Ë²»Ö±½Ó²Ù×÷Êý¾Ý¡£·þÎñÆ÷Êǿͻ§Ê¹ÓÃÊý¾ÝµÄΨһͨµÀ¡£

ÔÚMySQLÖУ¬Ã¿¸öÊý¾Ý¿âÆäʵ¾ÍÊÇÔÚÊý¾ÝĿ¼ÏÂÒ»¸ö×ÓĿ¼£¬show databasesÃüÁîÏ൱ÓÚÁгöÊý¾ÝĿ¼ÖеÄĿ¼Çåµ¥¡£create database db_nameÃüÁî»áÔÚÊý¾ÝĿ¼ÏÂн¨Ò»¸ödb_nameµÄĿ¼£¬ÒÔ´æ·ÅÊý¾Ý¿âµÄÊý¾ÝÎļþ¡£ËùÒÔÎÒÃÇÒ²¿ÉÏÂÃæµÄshellÃüÁʽÀ´½¨Á¢Ò»¸ö¿ÕÊý¾Ý¿â£º

% cd datadir
% mkdir db_name
% chmod u=rwx,go-rwx db_name

ͬÀí£¬É¾³ýÊý¾Ý¿âdrop database db_nameÒ²¾ÍÊÇɾ³ýÊý¾ÝĿ¼ÖÐÒ»¸öÃûΪdb_nameµÄĿ¼¼°Ä¿Â¼ÖеÄÊý¾Ý±íÎļþ¡£ÎÒÃÇÒ²¿ÉÓÃshellÕâ½øÐвÙ×÷£º

% cd datadir
% rm -rf db_name
[Note]
±È½Ïshell·½Ê½Óëdrop database·½Ê½£¬drop database db_nameÃüÁî²»ÄÜɾ³ýdb_nameĿ¼Öд´½¨µÄÆäËü·ÇÊý¾Ý±íÎļþ£»ÓÉÓÚInnoDBÊDZí¿Õ¼äÀ´¹ÜÀíÊý¾Ý±í£¬ËùÒÔ²»ÄÜÓÃrm»òdelÃüÁîɾ³ýInnoDBµÄÊý¾Ý±í¡£

3.2. MySQLÊý¾Ý±íÔÚϵͳÖбíÏÖÐÎʽ

MySQLÊý¾Ý±íÀàÐÍÓУºISAM¡¢MyISAM¡¢MERGE¡¢BDB¡¢InnoDBºÍHEAP¡£Ã¿ÖÖÊý¾Ý±íÔÚÎļþϵͳÖж¼Óв»Í¬µÄ±íʾ·½Ê½£¬ÓÐÒ»¸ö¹²Í¬µã¾ÍÊÇÿÖÖÊý¾Ý±íÖÁÉÙÓÐÒ»¸ö´æ·ÅÊý¾Ý±í½á¹¹¶¨ÒåµÄ.frmÎļþ¡£ÏÂÃæ½éÉÜÿÖÖÊý¾Ý±íÎļþ£º

  • ISAMÊý¾Ý±íÊÇ×îԭʼµÄÊý¾Ý±í£¬ÓÐÈý¸öÎļþ£¬·Ö±ðÊÇ£º

    .frm£¬´æ·ÅÊý¾Ý±íµÄ½á¹¹¶¨Ò壻

    .ISD£¬Êý¾ÝÎļþ£¬´æ·ÅÊý¾Ý±íÖеĸ÷¸öÊý¾ÝÐеÄÄÚ¿Õ£»

    .ISM£¬Ë÷ÒýÎļþ£¬´æ·ÅÊý¾Ý±íµÄËùÓÐË÷ÒýÐÅÏ¢¡£

  • MyISAMÊý¾Ý±íÊÇISAMÊý¾Ý±íµÄ¼Ì³ÐÕߣ¬Ò²ÓÐÈý¸öÎļþ£¬·Ö±ðÊÇ£º

    .frm£¬½á¹¹¶¨ÒåÎļþ£»

    .MYD£¬Êý¾ÝÎļþ£»

    .MYI£¬Ë÷ÒýÎļþ¡£

  • MERGEÊý¾Ý±íÊÇÒ»¸öÂß¼­½á¹¹£¬´ú±íÒ»×é½á¹¹ÍêÈ«ÏàͬµÄMyISAMÊý¾Ý±í¹¹³ÉµÄ¼¯ºÏ¡£ËüÔÚÎļþϵͳÖÐÓжþ¸öÎļþ£¬·Ö±ðÊÇ£º

    .frm£¬½á¹¹¶¨ÒåÎļþ£»

    .MRG£¬¹¹³ÉMERGE±íµÄMyISAMÊý¾Ý±íÇåµ¥£¬Ã¿¸öMyISAMÊý¾Ý±íÃûÕ¼Ò»ÐС£Ò²¾ÍÊÇ˵¿Éͨ¹ý¸Ä±ä¸Ã±íµÄÄÚÈÝÀ´¸Ä±äMERGEÊý¾Ý±íµÄ½á¹¹¡£ÐÞ¸ÄǰÇëÏÈˢлº´æ(flush tables)£¬µ«²»½¨ÒéÕâÑùÐÞ¸ÄMERGEÊý¾Ý±í¡£

  • BDBÊý¾Ý±íÓÃÁ½¸öÎļþÀ´±íʾ£¬·Ö±ðÊÇ£º

    .frm£¬½á¹¹¶¨ÒåÎļþ£»

    .db£¬Êý¾Ý±íÊý¾ÝºÍË÷ÒýÎļþ

  • InnoDBÓÉÓÚ²ÉÓñí¿Õ¼äµÄ¸ÅÄîÀ´¹ÜÀíÊý¾Ý±í£¬ËùÒÔËüÖ»ÓÐÒ»¸öÓëÊý¾Ý±í¶ÔÓ¦.frmÎļþ£¬Í¬Ò»Ä¿Â¼ÏÂµÄÆäËüÎļþ±íʾΪ±í¿Õ¼ä£¬´æ´¢Êý¾Ý±íµÄÊý¾ÝºÍË÷Òý¡£

  • HEAPÊý¾Ý±íÊÇÒ»¸ö´æÔÚÓÚÄÚ´æÖÐµÄ±í£¬ËùÒÔËüµÄÊý¾ÝºÍË÷Òý¶¼´æÔÚÓÚÄÚ´æÖУ¬ÎļþϵͳÖÐÖ»ÓÐÒ»¸ö.frmÎļþ£¬ÒÔ¶¨Òå½á¹¹¡£

Á˽âMySQLÊý¾Ý±íÔÚÎļþϵͳÖбíÏÖÐÎʽºó£¬ÎÒÃÇ¿ÉÖªµÀ£¬´´½¨¡¢Ð޸Ļòɾ³ýÊý¾Ý±í£¬Æäʵ¾ÍÊǶÔÕâЩÎļþ½øÐвÙ×÷¡£ÀýÈçһЩÊý¾Ý±í(³ýInnoDBºÍHEAPÊý¾Ý±íÍâ)£¬ÎÒÃÇ¿ÉÖ±½ÓÔÚÎļþϵͳÖÐɾ³ýÏàÓ¦µÄÎļþÀ´É¾³ýÊý¾Ý±í¡£

% cd datadir
% rm -f mydb/mydb.*

ÒÔÉÏÃüÁî¿Éɾ³ýmydbÊý¾Ý¿âÖеÄmydbÊý¾Ý±í¡£

3.3. Êý¾Ý±í×î´ó³ß´çÏÞÖÆ

ÔÚMySQLÖÐÓ°ÏìÊý¾Ý±í³ß´çµÄÒòËØÓкܶ࣬ÏÂÃæ·Ö±ð½øÐнéÉÜ£º

  • MySQLÊý¾Ý±íÀàÐ͵IJ»Í¬¶ÔÊý¾Ý±í³ß´çµÄÏÞÖÆ£º

    • ISAMÊý¾Ý±íÖе¥¸ö.ISDºÍ.ISMÎļþµÄ×î´ó³ß´çΪ4G£»

    • MyISAMÊý¾Ý±íÖе¥¸ö.MYDºÍ.MYIÎļþµÄĬÈÏ×î´ó³ß´çÒ²ÊÇ4G£¬µ«¿ÉÔÚ´´½¨Êý¾Ý±íʱÓÃAVG_ROW_LENGTHºÍMAX_ROWSÑ¡Ïî°ÑÕâ¸ö×îÖµÀ©´óµ½800ÍòTB¡£

    • MERGEÊý¾Ý±íµÄ×î´ó³ß´çÊÇËüµÄ¸÷×é³ÉMyISAMÊý¾Ý±íµÄ×î´ó³ß´çÖ®ºÍ¡£

    • BDBÊý¾Ý±íµÄ³ß´çÊÜÏÞÓÚBDB´¦Àí³ÌÐòËùÔÊÐíµÄ.dbÎļþµÄ×î´ó³ß´ç¡£Õâ¸ö×î´ó³ß´çËæ×ÅÊý¾Ý±íÒ³Ãæ³ß´ç(±àÒëʱȷ¶¨)¶ø±ä»¯£¬µ«¼´Ê¹ÊÇ×îСµÄÒ³Ãæ³ß´ç(512×Ö½Ú)£¬.dbÎļþµÄ×î´ó³ß´çÒ²¿É´ï2TB¡£

    • InnoDBÊý¾Ý±íµÄ±í¿Õ¼äµÄ×î´ó³ß´çÊÇ40ÒÚ¸öÒ³Ãæ£¬Ä¬ÈϵÄÒ³Ãæ³ß´çÊÇ16K£¬¸ÃÖµ¿ÉÔÚ8Kµ½64KÖ®¼ä£¬ÔÚ±àÒëʱȷ¶¨¡£InnoDBÊý¾Ý±íµÄ×î´ó³ß´çÒ²¾ÍÊDZí¿Õ¼äµÄ×î´ó³ß´ç¡£

  • ²Ù×÷ϵͳ¶ÔÎļþµÄ³ß´çÏÞÖÆ£¬Ò»°ãÎļþϵͳ¶¼¶Ôµ¥¸öÎļþ²»µÃ³¬¹ý2GµÄÏÞÖÆ¡£¸ÃÔ¼Êø»á¶ÔÊý¾Ý¿âÎļþÔì³ÉÏÞÖÆ¡£InnoDBÊý¾Ý±í¿Éͨ¹ýÀûÓÃδ¸ñʽ»¯Ó²ÅÌ×÷Ϊ±í¿Õ¼äÀ´Èƹý¸ÃÏÞÖÆ¡£

  • ¶ÔÓÚÊý¾ÝºÍË÷Òý·Ö¿ªÁ½¸öÎļþ´æ·ÅµÄÊý¾Ý±í£¬ÆäÖÐÈκÎÒ»¸öÎļþ´ïµ½²Ù×÷ϵͳÎļþµÄ×î´óÏÞÖÆ£¬Êý¾Ý¿â±íÒ²¾Í´ïµ½×î´ó³ß´ç¡£

  • °üº¬AUTO_INCREMENTÊý¾ÝÁеıíÊܵ½¸ÃÊý¾ÝÁÐÀàÐÍ×î´óÉÏÏÞÖµµÄÏÞÖÆ¡£

  • ÓÉÓÚInnoDBÊý¾Ý±íÓñí¿Õ¼äÀ´¹ÜÀí£¬Ò»¸ö±í¿Õ¼ä¿Éͬʱ¿ÕÄɶà¸öÊý¾Ý±í£¬ËùÒÔÊý¾Ý±íµÄ×î´ó³ß´çÊÜϵͳÎļþºÍͬһ±í¿Õ¼äÖÐÊý¾Ý±í¿Õ¼äµÄÔ¼Êø¡£

3.4. ״̬ÎļþºÍÈÕÖ¾Îļþ

ÔÚMySQLÊý¾ÝĿ¼Öл¹°üº¬×ÅÐí¶à״̬ÎļþºÍÈÕÖ¾Îļþ£¬ÕâЩÎļþµÄÎļþÃû¶¼ÊÇÒÔÖ÷»úÃû¼ÓÉÏÏà¹Øºó׺À´ÃüÃûµÄ¡£ÏÂÃæÊÇÕâЩÎļþµÄÒ»¸ö˵Ã÷ÁÐ±í£º

Table 3.1. ״̬ÎļþºÍÈÕÖ¾Îļþ

ÎļþÀàÐÍĬÈÏÃûÎļþÄÚÈÝ
½ø³ÌIDÎļþhostname.pidMySQL·þÎñÆ÷½ø³ÌµÄID
³£¹æ²éѯÈÕÖ¾hostname.logÁ¬½Ó/¶Ï¿ªÁ¬½ÓʼþºÍ²éѯÐÅÏ¢
Âý²éѯÈÕÖ¾hostname-slow.log¼Ç¼²éѯʱ¼äºÜ³¤µÄÃüÁîÐÅÏ¢
±ä¸üÈÕÖ¾hostname.nnn´´½¨»òÐÞ¸ÄÊý¾Ý±í½á¹¹ºÍÄÚÈݵIJéѯÃüÁîÐÅÏ¢
¶þ½øÖƱä¸üÈÕÖ¾hostname-bin.nnn´´½¨»òÐÞ¸ÄÊý¾Ý±í½á¹¹ºÍÄÚÈݵIJéѯÃüÁîµÄ¶þ½øÖƱíʾ·¨
¶þ½øÖƱä¸üÈÕÖ¾µÄË÷ÒýÎļþhostname-bin.indexʹÓÃÖеġ°¶þ½øÖƱä¸üÈÕÖ¾¡±Áбí
´íÎóÈÕÖ¾hostname.err¼Ç¼¡°Æô¶¯/¹Ø±Õ¡±Ê¼þºÍÒì³£Çé¿ö

±ä¸üÈÕÖ¾ºÍ¶þ½øÖƱä¸üÈÕÖ¾Ö÷ÒªÓÃÓÚMySQLÊý¾Ý¿â·þÎñÆ÷µÄ±ÀÀ£»Ö¸´ÖУ¬ÓÉÓÚ±ä¸üÈÕÖ¾¼Ç¼ÁËÊý¾Ý¿âµÄËùÓбä¸ü²Ù×÷£¬ËùÒÔ¿ÉÒÔ½øÐÐʼþÖØ·Å¡£¾ßÌå²Ù×÷Çë²Î¿¼Ïà¹ØÊý¾Ý¿â±¸·Ý»Ö¸´Õ½ڡ£¶ÔÓÚ±ä¸üÈÕÖ¾£¬ÎÒÃÇ¿ÉÓÃ--log-long-formatÑ¡ÏîÀ´ÈÃËüÒÔÀ©Õ¹·½Ê½¼Ç¼ÓйØÊ¼þ¡£À©Õ¹·½Ê½¿É¼Ç¼˭·¢³ö²éѯºÍʲôʱºò·¢³ö²éѯµÄÐÅÏ¢¡£¿ÉʹÎÒÃǸüºÃµØÕÆÎÕ¿Í»§¶ËµÄ²Ù×÷Çé¿ö¡£ÈÕÖ¾¼Ç¼×ŲéѯÃüÁîµÄËùÓвÙ×÷£¬ÀïÃæ¿ÉÄÜ»áÓÐһЩÃô¸ÐÐÅÏ¢¡£ËùÒÔÎÒÃÇҪȷ±£ÈÕÖ¾ÎļþµÄ°²È«¡£

3.5. µ÷ÕûMySQLÊý¾ÝĿ¼λÖÃ

MySQLÊý¾Ý¿âµÄÊý¾ÝĿ¼λÖ㬰üÀ¨Ä¿Â¼ÀïµÄ¸÷ÖÖÎļþµÄλÖÃ)¿É¸ù¾Ýʵ¼ÊÇé¿ö½øÐе÷Õû¡£µ÷ÕûµÄ·½·¨ÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇʹÓ÷ûºÅÁ´½Ó£»Ò»ÖÖÓ÷þÎñÆ÷Æô¶¯Ñ¡Ïî¡£ÏÂÃæÒ»¸öÁбí˵Ã÷ÁËÊý¾ÝĿ¼¼°Ä¿Â¼ÖÐÎļþ¸÷×ÔÊÊÒ˲ÉÓõķ½·¨£º

Table 3.2. MySQLÊý¾ÝĿ¼¼°Ä¿Â¼ÖÐÎļþλÖõĵ÷Õû·½·¨

µ÷Õû¶ÔÏóÊÊÓ÷½·¨
Õû¸öÊý¾ÝĿ¼Æô¶¯Ñ¡ÏîºÍ·ûºÅÁ´½Ó
Êý¾Ý¿âĿ¼·ûºÅÁ´½Ó
Êý¾Ý±í·ûºÅÁ´½Ó
InnoDBÊý¾Ý±í¿Õ¼äÆô¶¯Ñ¡Ïî
PIDÎļþÆô¶¯Ñ¡Ïî
ÈÕÖ¾ÎļþÆô¶¯Ñ¡Ïî

ÏÂÃæÊǸ÷ÖÖµ÷Õû·½·¨µÄ¾ßÌå²Ù×÷¹ý³Ì£º

  • ÔÚµ÷ÕûMySQLµÄÊý¾ÝĿ¼ʱ£¬ÒªÏÈÍ£Ö¹·þÎñÆ÷£¬ÔÙ°ÑÊý¾ÝÄ¿Â¼ÒÆ¶¯µ½ÐµÄλÖ᣽Ó×Å£¬ÎÒÃÇ¿ÉÑ¡ÔñÔÚÔ­À´Ä¿Â¼Ï´´½¨Ò»¸ö·ûºÅÁ´½ÓÖ¸ÏòеÄλÖ㬻òÕßÓÃÆô¶¯Ñ¡Ôñ--datadirÖ¸ÏòеÄÊý¾ÝĿ¼¡£ÍƼöÓô´½¨·ûºÅÁ´½ÓµÄ·½·¨£¬ÒòΪÈç¹ûÄǸöÊý¾ÝĿ¼ÖÐÓÐmy.cnfÎļþ£¬ÏàÓ¦µÄ·þÎñÆ÷»¹ÄÜÕÒµ½Ëü¡£

  • Êý¾Ý¿âÖ»ÄÜ´æÔÚÓÚMySQLÊý¾ÝĿ¼ÖУ¬ËùÒÔÖ»ÄÜʹÓ÷ûºÅÁ´½ÓµÄ·½·¨µ÷ÕûËüµÄλÖá£ÔÚLinuxϵͳµÄ²Ù×÷²½ÖèÈ磺

    1. ¹Ø±Õ·þÎñÆ÷£»

    2. °ÑÊý¾Ý¿âĿ¼¿½±´µ½ÐµÄλÖã»

    3. ɾ³ýÔ­À´µÄÊý¾Ý¿âĿ¼£»

    4. ÔÚÔ­À´µÄMySQLÊý¾ÝĿ¼Öд´½¨Ò»¸öͬÃû·ûºÅÁ´½ÓÖ¸ÏòеÄλÖã»

    5. ÖØÐÂÆô¶¯·þÎñÆ÷¡£

    ÔÚwindowsϵIJÙ×÷·½·¨²»Ð©²»Í¬£¬²Ù×÷·½·¨ÈçÏ£º

    1. ¹Ø±Õ·þÎñÆ÷£»

    2. °ÑÊý¾Ý¿âÄ¿Â¼ÒÆ¶¯ÐµÄλÖã»

    3. ɾ³ýÔ­À´µÄÊý¾Ý¿âĿ¼£»

    4. ÔÚÔ­À´Êý¾ÝĿ¼Ï½¨Ò»¸öͬÃûµÄ.symÎļþ£¬ÔÚÎļþÖÐÊäÈëÊý¾Ý¿âÐÂĿ¼µÄȫ·¾¶£¬Èçc:\mysql\newdir\mydb¡£Õâ¸öÎļþ¾ÍÏ൱ÓÚLinuxϵķûºÅÁ´½Ó£»

    5. ÖØÆô·þÎñÆ÷¡£

      [Note]
      ΪÁËÖ§³Ö·ûºÅÁ´½Ó¹¦ÄÜ£¬±ØÐëÓÃ--use-symbolic-linksÑ¡ÏîÆô¶¯·þÎñÆ÷£»»òÔÚÑ¡ÏîÎļþµÄ[mysqld]½ÚÖÐÌí¼Óuse-symbolic-linksÑ¡Ïî¡£
      [Note]
      MySQL±ØÐëÊÇ3.23.16ÒÔÉϰ汾ÇÒÊÇmax·þÎñÆ÷(mysqld-max»òmysqld-max-nt)¡£
  • ÒªÒÆ¶¯Êý¾Ý±í£¬±ØÐëÂú×ãÒÔÏÂËùÓÐÌõ¼þ²ÅÐУº

    • MySQLµÄ°æ±¾±ØÐëÊÇ4.0»òÒÔÉϵİ汾£»

    • ²Ù×÷ϵͳ±ØÐëÓÐÒ»¸ö¿ÉÓõÄrealpath()µ÷Óã»

    • ÒÆ¶¯µÄÊý¾Ý±í±ØÐëÊÇMyISAMÀàÐ͵ÄÊý¾Ý±í¡£

    ÔÚÂú×ãÒÔÉÏËùÓÐÌõ¼þºó£¬ÎÒÃǾͿɰÑ.MYDÊý¾ÝÎļþºÍMYIË÷ÒýÎļþÒÆµ½ÐÂλÖã¬ÔÙÔÚÔ­À´Î»Öô´½¨Á½¸öͬÃû·ûºÅÁ´½ÓÖ¸¶¨ÐµÄλÖá£×¢Ò⣬.frm¶¨ÒåÎļþÈÔÐèÁôÔÚÔ­À´µÄÊý¾Ý¿âĿ¼ÖС£

    ÈçÒÔÉÏÌõ¼þ²»ÄÜÈ«²¿Âú×㣬×îºÃ²»ÒªÒƶ¯Êý¾Ý±íÎļþ¡£·ñÔòÒ»µ©ÄãÔËÐÐALTER TABLE¡¢OPTIMIZE TABLE¡¢REPAIR TABLEÓï¾ä¶ÔÒÆ¶¯¹ýµÄÊý¾Ý±í½øÐÐÓÅ»¯»òÐ޸ģ¬ÕâÑùÊý¾Ý±í¾Í»á»Øµ½Ô­À´µÄλÖã¬Ê¹Òƶ¯²Ù×÷ʧЧ¡£ÒòΪÕâЩÃüÁîµÄÖ´Ðйý³ÌÊÇÕâÑùµÄ£ºËü»áÏÈÔÚÊý¾ÝĿ¼Öд´½¨Ò»¸öÁÙʱÊý¾Ý±í²¢¶ÔÕâ¸öÁÙʱÊý¾Ý±í½øÐÐÓÅ»¯»òÐ޸ģ¬È»ºóɾ³ýÔ­À´µÄÊý¾Ý±í(ÕâÀïÊÇÄãΪÁËÒÆ¶¯Êý¾Ý±í¶ø´´½¨µÄÒ»¸ö·ûºÅÁ´½Ó)£¬ÔÙ°ÑÁÙʱÊý¾Ý±í¸üÃûΪԭÀ´µÄÊý¾Ý±íÃû³Æ¡£ÕâÑùÒ»À´£¬ÄãÒÆ×ßµÄÊý¾Ý±í¾ÍºÍÕâ¸öÊý¾Ý¿âÍêȫûÓйØÏµÁË¡£»ùÓÚÒÔϵIJ»Îȶ¨ÒòËØ£¬ÈçÎÞÌØÊâ±ØÒª£¬²»½¨ÒéÒÆ¶¯Êý¾Ý±í¡£

  • InnoDB±í¿Õ¼äÊÇͨ¹ýÔÚÑ¡ÏîÎļþÖÐʹÓÃinnodb_data_home_dirºÍinnodb_data_file_pathÑ¡ÏîÁгöInnoDB±í¿Õ¼ä×é³ÉÎļþÇåµ¥µÄ·½·¨À´ÅäÖõģ¬ËùÒÔÎÒÃÇ¿Éͨ¹ýÐÞ¸ÄÕâЩѡÏîÀ´ÖØÐ°²ÖÃInnoDB±í¿Õ¼äµÄ×é³ÉÎļþ¡£²½ÖèÈçÏ£º

    • ¹Ø±Õ·þÎñÆ÷£»

    • ÒÆ¶¯×é³É±í¿Õ¼äµÄÎļþ£»

    • ÐÞ¸ÄÑ¡ÏîÎļþ£¬Ö¸³ö×é³É±í¿Õ¼äµÄÎļþµÄÐÂλÖã»

    • ÖØÆô·þÎñÆ÷¡£

  • ״̬ÎļþºÍÈÕÖ¾ÎļþµÄλÖÿÉͨ¹ýÑ¡ÏîÎļþ»òÆô¶¯·þÎñÆ÷ʱָ¶¨¡£

Chapter 4. MySQLÊý¾Ý¿âÈÕ³£¹ÜÀí

ΪÁËÈ·±£Êý¾Ý¿âƽÎȿɿ¿ÔËÐУ¬ÎÒÃÇÐè½øÐÐά»¤ºÍ¹ÜÀí£¬ÕâÊÇÿһλÊý¾Ý¿â¹ÜÀíÔ±µÄÖ°Ôð¡£ÏÂÃæ·Ö¼¸¸öרÌâ·Ö±ð½éÉÜ¡£

4.1. Êý¾Ý¿â°²È«¹ÜÀí

MySQLÊý¾Ý¿âͨ¹ýÓû§ºÍÃÜÂëÀ´¿ØÖÆÓû§¶ÔÊý¾Ý¿âµÄ·ÃÎÊ£¬µ±ÎÒÃÇа²×°ÁËÒ»¸öÊý¾Ý¿â·þÎñÆ÷ʱ£¬MySQLµÄȨÏÞ±íÉèÖÃÊǺܲ»°²È«£¬ËüĬÈÏÔÊÐíÈκÎÈ˲»ÐèÒªÃÜÂë¾Í¿É·ÃÎÊÊý¾Ý¿â¡£ËùÒÔÎÒÃǰ²×°ºÃ·þÎñÆ÷ºóµÚÒ»¼þÐèÒª×öµÄ¾ÍÊÇÉèÖÃÓû§ÃÜÂë¡£

ÔÚMySQLÖеÄmysqlÊý¾Ý¿âµÄuserÊý¾Ý±íÖдæÓÐÓû§µÄÕʺÅÐÅÏ¢£¬ÔÚ³õʼ״̬ÏÂÒÑ´æÔÚrootºÍһЩÄäÃûÓû§£¬ÇÒËùÓÐÓû§¶¼Ã»ÓÐÉèÖÃÃÜÂë¡£¸ÃÊý¾Ý±íµÄÕâЩÓû§ÐÅÏ¢ÊÇͨ¹ýÒ»¸ömysql_install_db½Å±¾°²×°µÄ¡£¸Ã±íµÄÖ÷ÒªÁÐÓУº

  • User£¬Á¬½ÓÊý¾Ý¿âµÄÓû§Ãû¡£

  • Host£¬ÔÊÐíÁ¬½Óµ½Êý¾Ý¿â·þÎñÆ÷µÄÖ÷»úÃû£¬¡°%¡±Í¨Åä·û´ú±íËùÓÐÖ÷»ú¡£

  • Password£¬Á¬½ÓÃÜÂ룬ÒѼÓÃÜ¡£

  • ÆäËüȨÏÞÁУ¬ÒÔ¡°Y¡±»ò¡°N¡±±êʶÊÇ·ñÓÐЧ¡£

ÔÚÕâÖÖ״̬ϵÄÊý¾Ý¿âÊǼ«²»°²È«µÄ£¬ÎÒÃÇ¿ÉÓÃÒÔÏÂÃüÁîÇáÒ׵طÃÎÊÊý¾Ý¿â£º

% mysql -h localhost -u root     #ͨ¹ý±¾µØÖ÷»ú£¬rootÓû§·ÃÎÊ£¬²»ÐèÒªÃÜÂëÑéÖ¤
% mysql -h localhost             #ͨ¹ý±¾µØÖ÷»ú£¬ÄäÃûÓû§·ÃÎÊ£¬²»ÐèÒªÃÜÂëÑéÖ¤

ÉèÖÃMySQLÓû§ÕʺÅÃÜÂëµÄ·½·¨ÓÐÈýÖÖ£º

  • ʹÓÃmysqladmin³ÌÐò£º

    % mysqladmin -h localhost -u root password "password"   #ÉèÖÃÔÚ±¾µØÒÔrootÉí·ÖµÇ¼µÄÃÜÂë
    % mysqladmin -h remote -u root password "password"      #ÉèÖÃÔ¶³ÌÖ÷»úÒÔrootÉí·ÖµÇ¼µÄÃÜÂë
    

    ÔÚ³õʼÉèÖÃʱ£¬ÕâÁ½ÌõÓï¾ä¶¼ÒªÔËÐУ¬ÒÔÈ·±£Êý¾Ý¿â±¾µØ·ÃÎʺÍÍøÂç·ÃÎʵݲȫ¡£

  • ͨ¹ýset passwordÕâÌõSQLÓï¾äÉèÖãº

    mysql> set password for 'root'@'localhost' = password('password');
    mysql> set password for 'root'@'remote' = password('password');
    
  • Ö±½ÓÐÞ¸ÄuserȨÏÞ±í£º

    mysql> use mysql;
    mysql> update user set password=password('password') where user='root';
    mysql> flush privileges;                            #ÖØÔØÈ¨ÏÞ±í£¬Ê¹ÐÞ¸ÄÂíÉÏÉúЧ
    

    MySQLʹÓÃפÁôÔÚÄÚ´æÖеÄȨÏÞ±í¿½±´À´½øÐзÃÎÊ¿ØÖÆ£¬µ±Ê¹ÓÃmysqladminºÍset passwordÉèÖÃÃÜÂ룬MySQL»á¼à²ìµ½È¨ÏÞ±íÒѱ»Ð޸ģ¬Ëü×Ô¶¯ÖØÔØ¸Ã±í¡£¶øÓÃupdateµÄ·½Ê½£¬MySQL¾Í¼à²ì²»µ½±ä»¯£¬ÐèÊÖ¶¯ÓÃflush privilegesÃüÁîË¢ÐÂÄÚ´æÖеÄȨÏÞ±í£¬ÒÔʹËüÂíÉÏÉúЧ¡£

ΪrootÓû§ÉèÖÃÃÜÂëºó£¬Èç¹ûÐèÒÔrootÉí·ÝÁ¬½ÓÊý¾Ý¿â£¬¾ÍÐèÑéÖ¤ÃÜÂë¡£ÎÒÃÇ¿ÉÓÃÒÔÏÂÓï¾äÁ¬½ÓÊý¾Ý¿â£º

% mysql -u root -p
Enter password:                         #ÊäÈërootµÄÃÜÂë

ÔÚuser±íÖУ¬userÁÐΪ¿ÕµÄΪÄäÃûÓû§¡£ËüÒ²ÊÇûÓÐÃÜÂëµÄ£¬ÎÒÃÇÐèΪËüÃÇÉèÖÃÒ»¸öÃÜÂ룬»ò¸É´à°ÑËüÃÇɾ³ý¡£ÔÚwindowsϵͳÉϵı¾µØÄäÃûÓû§ÕʺźÍrootÓû§ÓÐ×ÅͬÑùµÄȨÏÞ£¬ÕâÊÇÒ»¸öºÜ´óµÄ°²È«Â©¶´¡£Ó¦¸Ã°ÑËüɾ³ý»ò°ÑȨÏÞÏ÷Èõ¡£

4.2. ·þÎñÆ÷µÄÆô¶¯ºÍ¹Ø±Õ

ÔÚLinuxºÍwindowsƽ̨ÏÂMySQL·þÎñÆ÷µÄÆô¶¯·½Ê½Óкܴó²»Í¬£¬ÕâÀォ·Ö¿ª½éÉÜ£º

  • Linuxƽ̨£º

    Linuxƽ̨Ï£¬Ã¿Ò»¸ö½ø³Ì¶¼ÐèÓÉÒ»¸öÓû§À´ÔËÐУ¬MySQL×îºÃ²»ÒªÒÔrootÓû§À´ÔËÐС£ÎÒÃǿɴ´½¨Ò»¸ömysqlÓû§ºÍmysql×飬MySQL·þÎñÆ÷³ÌÐòĿ¼ºÍÊý¾ÝĿ¼ÓÉÕâ¸öÓû§ºÍ×éËùÓµÓУ¬ÆäËüÓû§Ã»ÓÐÈκÎȨÏÞ¡£ÒÔmysqlÓû§À´ÔËÐÐMySQL·þÎñÆ÷¡£

    % mysqld --user=mysql     #¼´Ê¹ÒÔrootÓû§Ö´ÐиÃÃüÁMySQLÊý¾Ý¿â»¹ÊÇ»áÓëmysqlÓû§ID¹ØÁª¡£
    

    ΪÁËʹ·þÎñÆ÷ÔÚϵͳÆô¶¯Ê±×Ô¶¯ÒÔmysqlÓû§ÔËÐУ¬ÐèÅäÖÃmy.cnfÅäÖÃÎļþ £¬°Ñuser=mysql°üº¬ÔÚ[mysqld]¶ÎÖС£

    ¹Ø±Õ·þÎñÆ÷¿ÉÓÃ% mysql.server stop»ò% mysqladmin -u root -p shutdown

  • windowsƽ̨£º

    ÊÖ¶¯·½Ê½£ºÖ±½ÓÔËÐÐc:\mysqldÃüÁî¡£

    ×÷Ϊ·þÎñ·½Ê½£ºÔËÐÐc:\mysqld-nt --installÃüÁ°Ñmysqld-nt°²×°ÎªwindowsµÄ·þÎñ£¬´Ëºó£¬Ã¿µ±windowsÆô¶¯Ê±£¬Ëü¾Í»á×Ô¶¯ÔËÐС£mysqld-ntÊÇÒ»¸öÖ§³ÖÃüÃû¹ÜµÀµÄMySQL·þÎñÆ÷¡£ÔËÐÐc:\mysqld-nt --remove¿É°Ñ·þÎñɾ³ý¡£ÊÖ¶¯Æô¶¯¹Ø±Õ·þÎñµÄ·½·¨ÊÇÔËÐÐc:\net start mysqlºÍc:\net stop mysqlÃüÁî¡£

4.3. Á¬½Ó¹ÊÕϻָ´

µ±ÓÉÓÚÎóɾmysqlÌ×½Ó×Öʱ(/tmp/mysql.sock)£¬ÎÒÃǾͲ»ÄÜͨ¹ýÌ×½Ó×ÖÁ¬½Ó·þÎñÆ÷¡£ÕâʱÎÒÃÇ¿Éͨ¹ýtcp/ipÀ´Á¬½Ó·þÎñÆ÷£¬Òª½¨Á¢Ò»¸ötcp/ipÁ¬½Ó£¬ÐèÓÃ127.0.0.1´úÌælocahost×÷Ϊ-h²ÎÊýµÄÖµÀ´Á¬½Ó·þÎñÆ÷¡£È磺

% mysqladmin -h 127.0.0.1 -u root -p shutdown       #¹Ø±Õ·þÎñÆ÷ÔÙÖØÆô»áÖØ½¨Ì×½Ó×Ö

µ±ÎÒÃÇÒòΪÍü¼ÇrootÓû§ÃÜÂë¶ø²»ÄÜÁ¬½Ó·þÎñÆ÷ʱ£¬ÖØÉèÖÃÃÜÂëµÄ²½ÖèÈ磺

  • Óà % kill -TERM PID¹Ø±Õ·þÎñÆ÷£¬ÓÃ-TERMÐÅÏ¢¿Éʹ·þÎñÆ÷ÔڹرÕǰ°ÑÄÚ´æÖеÄÊý¾ÝдÈë´ÅÅÌ¡£Èç¹û·þÎñÆ÷ûÓÐÏìÓ¦£¬ÎÒÃÇ¿ÉÓÃ% kill -9 PIDÀ´Ç¿ÖÆÉ¾³ý½ø³Ì£¬µ«²»½¨ÒéÕâÑù×ö¡£ÕâʱÄÚ´æÖеÄÊý¾Ý²»»áдÈë´ÅÅÌ£¬Ôì³ÉÊý¾Ý²»ÍêÕû¡£Èç¹ûÄãÊÇÓÃmysql_safe½Å±¾Æô¶¯MySQL·þÎñÆ÷µÄ£¬Õâ¸ö½Å±¾»á¼à¿Ø·þÎñÆ÷µÄÔËÐÐÇé¿ö²¢ÔÚËü±»ÖÕÖ¹Ê±ÖØÆô·þÎñÆ÷£¬ËùÒÔÈçÐè¹Ø±Õ·þÎñÆ÷£¬ÒªÏÈÖÕÖ¹¸Ã½ø³Ì£¬È»ºóÔÙÕæÕýÖÕÖ¹mysqld½ø³Ì¡£

  • ½Ó×ÅÓÃ--skip_grant-tablesÆô¶¯·þÎñÆ÷¡£ÕâʱMySQL·þÎñÆ÷½«²»Ê¹ÓÃȨÏÞ±í¶ÔÁ¬½Ó²Ù×÷½øÐÐÑéÖ¤¡£Äã¾Í¿ÉÔÚ²»ÌṩrootÃÜÂëµÄÇé¿öÏÂÁ¬½ÓÉÏ·þÎñÆ÷£¬²¢»ñµÃrootµÄȨÏÞ¡£ÕâÑùÄã¾Í¿ÉÓÃÉÏÃæ½éÉܵÄÐÞ¸ÄÃÜÂëµÄ·½·¨ÖØÉèrootÓû§µÄÃÜÂë¡£×¢Ò⣺Á¬½ÓÉÏ·þÎñÆ÷ºó£¬ÒªÂíÉÏÖ´ÐÐflush privilegesÃüÁʹȨÏÞ±í¶ÁÈëÄÚ´æ²¢ÉúЧ£¬ÒÔ×èÖ¹ÆäËûµÄÁ¬½Ó¡£¸ÃÓï¾ä»¹ÖØÐ¼¤»îgrantÓï¾ä£¬ÔÚMySQL·þÎñÆ÷²»Ê¹ÓÃȨÏÞ±íʱ£¬grantÓï¾ä±»½ûÓá£

  • ÐÞ¸ÄÍêrootÓû§ÃÜÂëºó£¬ÎÒÃǾͿɹرշþÎñÆ÷²¢ÖØÆôʹËùÓÐÅäÖÃÕý³£ÔË×÷¡£

4.4. MySQLÓû§ÕʺŹÜÀí

MySQLÓû§ÕʺŹÜÀíÖ÷ÒªÓÃgrant(ÊÚȨ)ºÍrevoke(³·È¨)Á½¸öSQLÖ¸ÁîÀ´¹ÜÀí¡£ÕâÁ½¸öÖ¸ÁîʵÖÊÊÇͨ¹ý²Ù×÷user(Á¬½ÓȨÏÞºÍÈ«¾ÖȨÏÞ)¡¢db(Êý¾Ý¿â¼¶È¨ÏÞ)¡¢tables_priv(Êý¾Ý±í¼¶È¨ÏÞ)¡¢columns_priv(Êý¾ÝÁм¶È¨ÏÞ)ËĸöȨÏÞ±íÀ´·ÖÅäȨÏ޵ġ£hostȨÏÞ±í²»ÊÜÕâÁ½¸öÖ¸ÁîÓ°Ïì¡£ÏÂÃæ½«»áÏêϸ½éÉÜÓû§È¨ÏÞ¹ÜÀíµÄÄÚÈÝ¡£

  • GRANTÓ﷨˵Ã÷£º

    GRANT privileges (columns)          #privileges±íʾÊÚÓèµÄȨÏÞ£¬columns±íʾ×÷ÓõÄÁÐ(¿ÉÑ¡) 
          ON what                       #ÉèÖÃȨÏÞ¼¶±ð£¬È«¾Ö¼¶¡¢Êý¾Ý¿â¼¶¡¢Êý¾Ý±í¼¶ºÍÊý¾ÝÁм¶
          TO account                    #ȨÏÞÊÚÓèµÄÓû§£¬ÓÃ"user_name"@"host_name"ÕâÖÖÓû§Ãû¡¢Ö÷»úÃû¸ñʽ
          IDENTIFIED BY 'password'      #ÉèÖÃÓû§ÕʺÅÃÜÂë
          REQUIRE encryption requirements       #ÉèÖþ­ÓÉSSLÁ¬½ÓÕʺÅ
          WITH grant or resource management options;   #ÉèÖÃÕʺŵĹÜÀíºÍ×ÊÔ´(Á¬½Ó·þÎñÆ÷´ÎÊý»ò²éѯ´ÎÊýµÈ)Ñ¡Ïî
    

    ʾÀý£º

    mysql>grant all on db.* to 'test'@'localhost' identified by 'test';
    ÉÏÀýÔËÐкóµÄЧ¹ûÊÇ£¬testÓû§Ö»ÄÜͨ¹ý¡®test¡¯ÃÜÂë´Ó±¾»ú·ÃÎÊdbÊý¾Ý¿â
    
    mysql>grant all on db.* to 'test'@'%' identified by 'test';
    ÉÏÀýÔËÐкóµÄЧ¹ûÊÇ£¬testÓû§¿Éͨ¹ý¡®test¡¯ÃÜÂë´ÓÈÎÒâ¼ÆËã»úÉÏ·ÃÎÊdbÊý¾Ý¿â¡£¡®%¡¯´ú±íÈÎÒâ×Ö·û£¬¡®_¡¯´ú±íÒ»¸öÈÎÒâ×Ö·û¡£Ö÷»úÃû²¿·Ý»¹¿ÉÒÔÊÇIPµØÖ·¡£
    
    [Note]
    Èç¹ûûÓиø¶¨Ö÷»ú²¿·Ý£¬ÔòĬÈÏΪÈÎÒâÖ÷»ú£¬Ò²¾ÍÊÇ'test'ºÍ'test'@'%'Êǵȼ۵ġ£
  • Table 4.1. ·ÃÎÊȨÏÞ±í

    ȨÏÞȨÏÞ˵Ã÷
    CREATE TEMPORARY TABLES´´½¨ÁÙʱÊý¾Ý±í
    EXECUTEÖ´Ðд洢¹ý³Ì(Ôݲ»Ö§³Ö)
    FILE²Ù×÷ϵͳÎļþ
    GRANT OPTION¿É°Ñ±¾ÕʺŵÄȨÏÞÊÚÓèÆäËüÓû§
    LOCK TABLESËø¶¨Ö¸¶¨Êý¾Ý±í
    PROCESS²é¿´ÔËÐÐ×ŵÄÏß³ÌÐÅÏ¢
    RELOADÖØÐ¼ÓÔØÈ¨ÏÞ±í»òË¢ÐÂÈÕÖ¾¼°»º³åÇø
    REPLICATION CLIENT¿É²éѯÖ÷/´Ó·þÎñÆ÷Ö÷»úÃû
    REPLICATION SLAVEÔËÐÐÒ»¸ö¾µÏñ´Ó·þÎñÆ÷
    SHOW DATABASES¿ÉÔËÐÐSHOW DATABASESÖ¸Áî
    SHUTDOWN¹Ø±ÕÊý¾Ý¿â·þÎñÆ÷
    SUPER¿ÉÓÃkillÖÕÖ¹Ïß³ÌÒÔ¼°½øÐг¬¼¶Óû§²Ù×÷
    ALTER¿ÉÐ޸ıíºÍË÷ÒýµÄ½á¹¹
    CREATE´´½¨Êý¾Ý¿âºÍÊý¾Ý±í
    DELETEɾ³ýÊý¾Ý±íÖеÄÊý¾ÝÐÐ
    DROPɾ³ýÊý¾Ý±íºÍÊý¾ÝÐÐ
    INDEX½¨Á¢»òɾ³ýË÷Òý
    INSERT²åÈëÊý¾ÝÐÐ
    REFERENCES(ÔÝʱ²»Ö§³Ö)
    SELECT²éѯÊý¾ÝÐÐ
    UPDATE¸üÐÂÊý¾ÝÐÐ
    ALLËùÓÐȨÏÞ£¬µ«²»°üÀ¨GRANT¡£
    USAGEÎÞȨÏÞȨÏÞ
  • Table 4.2. ȨÏÞ×÷Ó÷¶Î§(ÓÉON×Ó¾äÉèÖÃ)

    ȨÏÞÏÞ¶¨·û×÷Ó÷¶Î§
    ON *.*È«¾Ö¼¶È¨ÏÞ£¬×÷ÓÃÓÚËùÓÐÊý¾Ý¿â
    ON *È«¾Ö¼¶È¨ÏÞ£¬Èôδָ¶¨Ä¬ÈÏÊý¾Ý¿â£¬Æä×÷Ó÷¶Î§ÊÇËùÓÐÊý¾Ý¿â£¬·ñÔò£¬Æä×÷Ó÷¶Î§Êǵ±Ç°Êý¾Ý¿â
    ON db_name.*Êý¾Ý¿â¼¶È¨ÏÞ£¬×÷ÓÃÓÚÖ¸¶¨Êý¾Ý¿âÀïµÄËùÓÐÊý¾Ý±í
    ON db_name.tbl_nameÊý¾Ý±í¼¶È¨ÏÞ£¬×÷ÓÃÓÚÊý¾Ý±íÀïµÄËùÓÐÊý¾ÝÁÐ
    ON tbl_nameÊý¾Ý±í¼¶È¨ÏÞ£¬×÷ÓÃÓÚĬÈÏÊý¾Ý¿âÖÐÖ¸¶¨µÄÊý¾Ý±íÀïµÄËùÓÐÊý¾ÝÁÐ
  • USAGEȨÏÞµÄÓ÷¨£ºÐÞ¸ÄÓëȨÏÞÎ޹صÄÕÊ»§ÏÈ磺

    mysql>GRANT USAGE ON *.* TO account IDENTIFIED BY 'new_password';     #ÐÞ¸ÄÃÜÂë
    mysql>GRANT USAGE ON *.* TO account REQUIRE SSL;                      #ÆôÓÃSSLÁ¬½Ó
    mysql>GRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 10; #ÉèÖÃ×ÊÔ´ 
    
  • ÓµÓÐWITH GRANT OPTIONȨÏÞµÄÓû§¿É°Ñ×ÔÒÑËùÓµÓõÄȨÏÞתÊÚ¸øÆäËûÓû§£¬È磺

    mysql>GRANT ALL ON db.* TO 'test'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
    ÕâÑùtestÓû§¾ÍÓÐȨ°Ñ¸ÃȨÏÞÊÚÓèÆäËûÓû§¡£
    
  • ÏÞÖÆ×ÊԴʹÓã¬È磺

    mysql>GRANT ALL ON db.* TO account IDENTIFIED BY 'password' WITH MAX_CONNECTIONS_PER_HOUR 10 MAX_QUERIES_PER_HOUR 200 MAX_UPDATES_PER_HOUR 50;
    ÔÊÐíaccountÓû§Ã¿Ð¡Ê±×î¶àÁ¬½Ó20´Î·þÎñÆ÷£¬Ã¿Ð¡Ê±×î¶à·¢³ö200Ìõ²éѯÃüÁî(ÆäÖиüÐÂÃüÁî×î¶àΪ50Ìõ)
    

    ĬÈ϶¼ÊÇÁãÖµ£¬¼´Ã»ÓÐÏÞÖÆ¡£FLUSH USER_RESOURCESºÍFLUSH PRIVILEGES¿É¶Ô×ÊÔ´ÏÞÖÆ¼ÆÊýÆ÷ÇåÁã¡£

  • REVOKEÓ﷨˵Ã÷£º

    mysql>REVOKE privileges (columns) ON what FROM account;
    

    ʾÀý£º

    mysql>REVOKE SELECT ON db.* FROM 'test'@'localhost';
    ɾ³ýtestÕʺŴӱ¾»ú²éѯdbÊý¾Ý¿âµÄȨÏÞ
    

    REVOKE¿Éɾ³ýȨÏÞ£¬µ«²»ÄÜɾ³ýÕʺţ¬¼´Ê¹ÕʺÅÒÑûÓÐÈκÎȨÏÞ¡£ËùÒÔuserÊý¾Ý±íÀﻹ»áÓиÃÕʺŵļǼ£¬Òª³¹µ×ɾ³ýÕʺţ¬ÐèÓÃDELETEÃüÁîɾ³ýuserÊý¾Ý±íµÄ¼Ç¼£¬È磺

    % mysql -u root -p
    mysql>use mysql
    mysql>DELETE FROM user where User='test' and Host='localhost';
    mysql fulsh privileges;
    

    REVOKE²»ÄÜɾ³ýREQUIREºÍ×ÊÔ´Õ¼ÓõÄÅäÖá£ËûÃÇÊÇÒªÓÃGRANTÀ´É¾³ýµÄ£¬È磺

    GRANT USAGE ON *.* TO account REQUIRE NONE;      #ɾ³ýaccountÕʺŵÄSSLÁ¬½ÓÑ¡Ïî
    GRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 0 MAX_QUERIES_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;       #ɾ³ýaccountÕʺŵÄ×ÊÔ´ÏÞÖÆ
    

4.5. ÈÕÖ¾Îļþ¹ÜÀí

ÓйØMySQLµÄÈÕÖ¾ÎļþÇ°ÃæÕ½ÚÒѼòÒªÌÖÂÛ¹ýÁË£¬Ö÷ÒªÓÐËÄÖÖÈÕÖ¾Îļþ£¬·Ö±ðÊdz£¹æ²éѯÈÕÖ¾¡¢Âý²éѯÈÕÖ¾¡¢±ä¸ü²éѯÈÕÖ¾ºÍ¶þ½øÖƱä¸üÈÕÖ¾¡£ÕâЩÈÕÖ¾ÎļþµÄ´´½¨ÐèÔÚÆô¶¯·þÎñÆ÷ʱÓÃÑ¡ÏîÖ¸¶¨¡£

Table 4.3. ÈÕÖ¾Æô¶¯Ñ¡Ïî

Æô¶¯Ñ¡Ï»îÈÕÖ¾
--log[=file_name]³£¹æÈÕÖ¾Îļþ
--log-bin[=file_name]¶þ½øÖƱä¸üÈÕÖ¾Îļþ
--log-bin-index=file_name¶þ½øÖƱä¸üÈÕÖ¾ÎļþË÷ÒýÎļþ
--log-update[=file_name]±ä¸üÈÕÖ¾Îļþ
--log-slow-queries[=file_name]Âý²éѯÈÕÖ¾Îļþ
--log-isam[=file_name]ISAM/MyISAMÈÕÖ¾Îļþ
--log-long-formatÉèÖÃÂý²éѯÈÕÖ¾ºÍ±ä¸üÈÕÖ¾µÄ¸ñʽ

BDBºÍInnoDBÊý¾Ý±íµÄÈÕÖ¾Îļþ»á×Ô¶¯´´½¨²»ÓÃÖ¸¶¨Ñ¡Ïî¡£µ«¿ÉÓÃÒÔÏÂÑ¡ÏîָʱÈÕÖ¾ÎļþµÄ´æ·Å·¾¶¡£

Table 4.4. BDBºÍInnoDBÊý¾Ý±íÈÕ־ѡÏî

Æô¶¯Ñ¡ÏîÓÃ;
--bdb-logdir=dir_name´æ·ÅBDBÈÕÖ¾ÎļþµÄλÖÃ
--innodb-log_arch_dir=dir_name´æ·ÅInnoDBÈÕÖ¾ÎļþµÄ¹éµµÄ¿Â¼
--innodb_log_group_home_dir=dir_name´æ·ÅInnoDBÈÕÖ¾ÎļþµÄλÖÃ

MySQLÈÕÖ¾ÎļþÑ¡Ïî¿ÉÔÚmysqldºÍmysqld_safe½Å±¾ÖÐʹÓã¬Ò²¿ÉÔÚÑ¡ÏîÎļþmy.cnfµÄ[mysqld]ÖÐʹÓá£ÍƼöÔÚÑ¡ÏîÎļþÖÐʹÓã¬ÒòΪÿ´ÎÆô¶¯·þÎñÆ÷µÄÈÕ־ѡÏî»ù±¾É϶¼ÊÇÒ»Öµġ£

ÈÕÖ¾µÄˢпÉÓÃmysqladmin flush-logsÃüÁî»òflush logsÓï¾äʵÏÖ¡£ÁíÍ⣬¶ÔMySQL·þÎñÆ÷·¢ËÍÒ»ÌõSIGHUPÐźÅÒ²»áË¢ÐÂÈÕÖ¾¡£´íÎóÈÕÖ¾ºÍDBD/InnoDBÈÕÖ¾²»ÄÜÓÃÒÔÉÏ·½·¨Ë¢Ð¡£

´íÎóÈÕÖ¾¼Ç¼MySQLÊý¾Ý¿âϵͳµÄÂ۶Ϻͳö´íÐÅÏ¢£¬ÓÉmysqld_safe½Å±¾´´½¨£¬ÎļþÃûĬÈÏΪhostname.err£¬Ò²¿Éͨ¹ý--err-log»òÑ¡ÏîÎļþµÄerr-logÓï¾äÖ¸¶¨ÁíÍâµÄÃû×Ö¡£Èç¹ûÖ±½ÓÓÃmysqld³ÌÐòÆô¶¯·þÎñÆ÷£¬´íÎóÐÅÏ¢»áÖ±½ÓÊä³öµ½Êä³öÉ豸£¬Ò²¾ÍÊÇÆÁÄ»¡£µ«ÎÒÃÇ¿ÉÓÃÖØ¶¨Ïò·½·¨°Ñ´íÎóÐÅÏ¢Êä³öµ½ÆäËüµØ·½£¬Èç°Ñ´íÎóÐÅÏ¢Êä³öµ½/var/log/mysql.errÎļþÖУ¬¿ÉÒÔÖ´ÐÐÒÔÏÂÓï¾ä£º

% mysqld > /var/log/mysql.err 2>&1 &

ÔÚwindowsƽ̨Ï£¬MySQL·þÎñÆ÷ĬÈϰÑÕï¶ÏÐÅϢдµ½Êý¾ÝĿ¼µÄmysql.errÎļþÖУ¬²¢ÇÒ²»ÔÊÐíÁíÍâÖ¸¶¨´íÎóÈÕÖ¾ÎļþÃû¡£ÈçÔÚÆô¶¯MySQL·þÎñÆ÷ʱ¸ø³öÁË--consoleÑ¡ÏÔòMySQL»á°ÑÕï¶ÏÐÅÏ¢Êä³öµ½¿ØÖÆÌ¨´°¿Ú¶ø²»´´½¨´íÎóÈÕÖ¾¡£µ«ÈçMySQLÊÇ×÷Ϊһ¸ö·þÎñÔËÐУ¬Ôò--consoleÑ¡Ïî²»Æð×÷Óá£

4.5.1. ÈÕ־ʧЧ´¦Àí

ÔÚ·þÎñÆ÷Õý³£ÔËÐÐÖУ¬»á²úÉú´óÁ¿µÄÈÕÖ¾Îļþ¡£ÎÒÃÇÒª¶ÔÕâЩÈÕÖ¾Îļþ½øÐÐʧЧ¹ÜÀí£¬ÒÔ½ÚÊ¡´ÅÅ̿ռäºÍ·½±ã²éѯ¡£½øÐÐÈÕ־ʧЧ´¦ÀíµÄ·½Ê½Ö÷ÒªÓÐÒÔϼ¸ÖÖ£º

  • ÈÕÖ¾ÂÖת¡£¸Ã·½·¨ÊÊÓÃÓÚ³£¹æ²éѯÈÕÖ¾ºÍÂý²éѯÈÕÖ¾ÕâЩÎļþÃû¹Ì¶¨µÄÈÕÖ¾Îļþ£¬ÔÚÈÕÖ¾ÂÖתʱ£¬Ó¦½øÐÐÈÕ־ˢвÙ×÷(mysqladmin flush-logsÃüÁî»òflush logsÓï¾ä)£¬ÒÔÈ·±£»º´æÔÚÄÚ´æÖеÄÈÕÖ¾ÐÅϢдÈë´ÅÅÌ£»

    ÈÕÖ¾ÂÖתµÄ²Ù×÷¹ý³ÌÊÇÕâÑùµÄ£ºµÚÒ»´ÎÂÖתʱ£¬°Ñlog¸üÃûΪlog.1£¬È»ºó·þÎñÆ÷ÔÙ´´½¨Ò»¸öеÄlogÎļþ£¬ÔÚµÚ¶þÂÖתʱ£¬ÔÙ°Ñlog.1¸üÃûΪlog.2£¬°Ñlog¸üÃûΪlog.1£¬È»ºó·þÎñÆ÷ÔÙ´´½¨Ò»¸öеÄlogÎļþ¡£Èç´ËÑ­»·£¬´´½¨Ò»ÏµÁеÄÈÕÖ¾Îļþ¡£µ±µ½´ïÈÕÖ¾ÂÖתʧЧλÖÃʱ£¬Ï´ÎÂÖת¾Í²»ÔÙ¶ÔËü½øÐиüÃû£¬Ö±½Ó°Ñ×îºóÒ»¸öÈÕÖ¾Îļþ¸²¸Çµô¡£ÀýÈ磺Èç¹ûÿÌì½øÐÐÒ»´ÎÈÕÖ¾ÂÖת²¢Ïë±£Áô×îºó7ÌìµÄÈÕÖ¾Îļþ£¬¾ÍÐèÒª±£Áôlog.1--log.7¹²Æß¸öÈÕÖ¾Îļþ£¬µÈÏ´ÎÂÖתʱ£¬ÓÃlog.6¸²¸ÇÔ­À´µÄlog.7³ÉеÄlog.7£¬Ô­À´µÄlog.7¾Í×ÔȻʧЧ¡£ÏÂÃæÊÇÒ»¸öʧЧ´¦ÀíµÄshell½Å±¾£¬ÒÔ¹©²Î¿¼£º

    #!/bin/sh
    # shell script ---  rotate_log.sh
    
    if [ $# -ne 1 ]; then
       echo "Usage: $0 logname" 1>&2
       exit 1
    if
    
    logfile=$1
    
    mv $logfile.6 $logfile.7
    mv $logfile.5 $logfile.6
    mv $logfile.4 $logfile.5
    mv $logfile.3 $logfile.4
    mv $logfile.2 $logfile.3
    mv $logfile.1 $logfile.2
    mv $logfile $logfile.1
    mysqladmin -u flush -pflushpass flush-logs     #Ö´ÐÐmysqladmin flush-logs»á´ò¿ªÒ»¸öÈÕÖ¾Îļþ----ÖØÐÂÉú³ÉÒ»¸öеÄÈÕÖ¾Îļþ
    

    ¸Ã½Å±¾ÒÔÈÕÖ¾ÎļþÃûΪ²ÎÊý£¬Ö´Ðз½·¨ÈçÏ£º

    % rotate_log.sh /usr/local/mysql/data/log
    

    ×¢Ò⣬½Å±¾ÖеÄmysqladminÃüÁîÊÇ´øÓÐ-uºÍ-p²ÎÊýµÄ£¬ÒòΪÎÒÃǽøÐÐÈÕ־ˢÐÂʱÐèÁ¬½Ó·þÎñÆ÷¡£ÎªÈ·±£°²È«£¬ÎÒÃǽ¨Á¢Ò»¸öflushÓû§£¬ÃÜÂëΪflushpass¡£¸ÃÓû§Ö»ÓÐÈÕ־ˢеÄȨÏÞ(reloadȨÏÞ)¡£´´½¨¸ÃÓû§µÄÓï¾äÈçÏ£º

    GRANT RELOAD ON *.* TO 'flush'@'localhost' IDENTIFIED BY 'fulshpass';
    

    ÉèÖúúó£¬ÎÒÃǾͿÉÀûÓÃϵͳµÄ×Ô¶¯´¦Àí»úÖÆ¶¨ÆÚÔËÐиýű¾ÒÔÉú³ÉÂÖתÈÕÖ¾¡£ÔÚLinuxϵͳÉϵÄMySQL·¢ÐаæÖдøÓÐÒ»¸öÓÃÀ´°²×°mysql-log-rotateÈÕÖ¾ÂÖת½Å±¾µÄlogrotate¹¤¾ß£¬ÈçÓÃRPM°²×°,ÔòÔÚ/usr/share/mysqlĿ¼£¬ÈçÓöþ½øÖÆ·½Ê½°²×°,ÔòÔÚMySQL°²×°Ä¿Â¼µÄsupport-filesĿ¼£¬ÈçÓÃÔ´Âë°²×°£¬ÔòÔÚ°²×°Ä¿Â¼µÄshare/mysqlĿ¼ÖС£

    ÔÚwindowsƽ̨Ï£¬²»ÄÜÔÚÏ߸üÃû£¬ÐèÍ£µô·þÎñÆ÷£¬ÔÙ½øÐС£ÏÂÃæÊÇÒ»¸ö½øÐÐÈÕÖ¾¸üÃûµÄÅú´¦ÀíÎļþ£º

    @echo off
    REM script name : rotate_log.bat
    
    if not "%1" == "" goto ROTATE
    
       @echo Usage: rotate_log logname
       goto DONE
    
    :ROTATE
    set logfile=%1
    erase %logfile%.7
    rename %logfile%.6 %logfile%.7
    rename %logfile%.5 %logfile%.6
    rename %logfile%.4 %logfile%.5
    rename %logfile%.3 %logfile%.4
    rename %logfile%.2 %logfile%.3
    rename %logfile%.1 %logfile%.2
    rename %logfile% %logfile%.1
    :DONE
    

    ¸Ã½Å±¾µÄÖ´Ðз½·¨ÈçÏ£º

    c:\rotate_log c:\mysql\data\log
    
  • ÒÔʱ¼äΪÒÀ¾Ý¶ÔÈÕÖ¾½øÐÐʧЧ´¦Àí¡£¸Ã·½·¨½«¶¨ÆÚɾ³ý³¬¹ý¸ø¶¨Ê±¼äµÄÈÕÖ¾Îļþ£¬ÊÊÓÃÓÚ±ä¸üÈÕÖ¾ºÍ¶þ½øÖÆÈÕÖ¾µÈÎļþÃûÓÃÊý×Ö±àºÅ±êʶµÄÈÕÖ¾Îļþ¡£ÏÂÃæÊÇÒ»¸öÓÃPerlд³ÉµÄ´¦Àí½Å±¾£º

    #!/usr/bin/perl -w
    
    # script name: expire_log.pl
    # Usage: expire_log.pl logfile ...
    
    use strict
    die "Usage: $0 logfile ...\n" if @ARGV == 0;
    my $max_allowed_age = 7;      #max allowed age in days
    foreach my $file (@ARGV)      #chack each argument
    {
       unlink ($file) if -e $file && -M $file >= $max_allowed_age;
    }
    exit(0);
    

    ¸Ã½Å±¾ÐèÌṩһ¸ö½«±»ÂÖתµÄÈÕÖ¾ÎļþÃû×÷Ϊ²ÎÊý£¬È磺

    % expire_log.pl /usr/local/mysql/data/log.[0-9]*
    
    [Note]
    ÔÚ¸ø½Å±¾²ÎÊýʱÇëСÐÄ£¬Èç¸ø³ö*Ϊ²ÎÊý£¬Ôò»áɾ³ýĿ¼ÖÐËùÓиüÐÂʱ¼ä´óÓÚ7ÌìµÄÎļþ¡£
  • ¾µÏñ»úÖÆ¡£°ÑÈÕÖ¾Îļþ¾µÏñµ½ËùÓеĴӷþÎñÆ÷ÉÏ¡£ÒªÊ¹ÓþµÏñ»úÖÆ£¬Äã±ØÐëÖªµÀÖ÷·þÎñÆ÷ÓжàÉÙ¸ö´Ó·þÎñÆ÷£¬ÄÄЩÕýÔÚÔËÐУ¬²¢ÐèÒÀ´ÎÁ¬½Óÿһ¸ö´Ó·þÎñÆ÷²¢·¢³öshow slave statusÓï¾äÒÔÈ·¶¨ËüÕý´¦ÀíÖ÷·þÎñÆ÷µÄÄĸö¶þ½øÖÆÈÕÖ¾Îļþ(Óï¾äÊä³öÁбíµÄMaster_Log_FileÏî)£¬Ö»ÓÐËùÓеĴӷþÎñÆ÷¶¼²»»áÓõ½µÄÈÕÖ¾Îļþ²ÅÄÜɾ³ý¡£É¾³ý·½·¨ÊÇÔÚÖ÷·þÎñÆ÷ÉÏ·¢³öÒÔÏÂÓï¾ä£º

    mysql> PURGE MASTER LOGS TO 'last_log.xx';
    

    ÉÏÃæÓï¾äÖеÄlast_log.xxÊÇËùÓдӷþÎñÆ÷ÒÑ´¦ÀíµÄ×îС±àºÅÈÕÖ¾Îļþ¡£

4.6. MySQL·þÎñÆ÷µÄһЩÓÅ»¯ÅäÖÃ

  • ·þÎñÆ÷µÄ¼àÌý¶Ë¿ÚÉèÖÃ

    • TCP/IP¶Ë¿Ú3306ÊÇMySQL·þÎñÆ÷ĬÈϵÄÍøÂç¼àÌý¶Ë¿Ú£¬ÈçÓÃ--skip-networkingÑ¡ÏîÆô¶¯·þÎñÆ÷£¬Ôò²»¼àÌýTCP/IP¶Ë¿Ú¡£¿ÉÓÃ--port¶Ë¿ÚÁíÐÐÖ¸¶¨Ò»¸ö¼àÌý¶Ë¿Ú¡£Èç·þÎñÆ÷Ö÷»úÓжà¸öIP£¬»¹¿ÉÓÃ--bind-addressÑ¡Ïî¶Ô·þÎñÆ÷ÔÚ¼àÌý¿Í»§Á¬½ÓʱʹÓõÄIPµØÖ·½øÐÐÉ趨¡£

    • ÔÚUNIXϵͳÉÏ£¬MySQL¿ÉÔÚÒ»¸öUNIXÓòÌ×½Ó×ÖÎļþÉϼàÌýÓÐÎÞ±¾µØ¿Í»§ÔÚÊÔͼÒÔlocalhostΪÖ÷»úÃû½øÐÐÁ¬½Ó¡£Ä¬ÈϵÄÌ×½Ó×ÖÎļþÊÇ/tmp/mysql.sock£¬¿ÉÓÃ--socketÑ¡ÏîÖ¸¶¨ÁíÍâÒ»¸öÌ×½Ó×ÖÎļþ¡£

    • ÔÚ»ùÓÚNTµÄWindowsƽ̨ÉÏ£¬ÓÐ-ntµÄMySQL·þÎñÆ÷¶¼Ö§³ÖÃüÃû¹ÜµÀ¡£Ä¬ÈϵÄÃüÃû¹ÜµÀÊÇMySql£¬¿ÉÓÃ--socketÑ¡ÏîÁíÐÐÖ¸¶¨¡£

  • ÆôÓûò½ûÓÃLOAD DATAÓï¾äµÄLOCALÄÜÁ¦

    • ¿ÉÔÚMySQL·þÎñÆ÷±àÒëʱ£¬ÓÃconfigure½Å±¾µÄ--enable-local-infile»ò--disable-local-infileÑ¡Ïî°ÑLOAD DATAÓï¾äµÄLOCALÄÜÁ¦ÉèÖÃΪÆôÓûò½ûÓã»

    • ÔÚMySQL·þÎñÆ÷Æô¶¯ÊÇ£¬¿ÉÒÔÓÃ--local-infile»ò--disable-local-infileÑ¡ÏîÀ´ÆôÓûò½ûÓ÷þÎñÆ÷µÄLOCALÄÜÁ¦(ÔÚMySQL 4.0.2֮ǰµÄ°æ±¾ÀҪÓÃ--local-infile=0À´½ûÓÃËü)¡£

    Èç¹ûÔÚ·þÎñÆ÷¶Ë½ûÓÃÁËLOCALµÄÄÜÁ¦£¬Ôò¿Í»§¶Ë¾Í²»ÄÜʹÓøù¦ÄÜ£»Èç·þÎñÆ÷ÆôÓÃÁËLOCALµÄÄÜÁ¦£¬¿Í»§¶ËĬÈÏÒ²ÊǽûֹʹÓõ쬵«¿ÉÓÃmysql³ÌÐòµÄ--local-infileÑ¡ÏîÆôÓÃËü¡£

  • ¹ú¼Ê»¯ºÍ±¾µØ»¯£¬¹ú¼Ê»¯ÊÇÖ¸Èí¼þÄܹ»ÔÚÊÀ½ç¶à¸ö¹ú¼ÒµØÇøÊ¹Ó㬶ø±¾µØ»¯ÔòÊÇÖ¸¿É´Ó¹ú¼Ê»¯Èí¼þÖÐÑ¡ÔñÒ»Ì×Êʺϱ¾µØÇøµÄÓïÑÔºÍϰ¹ßµÄÉèÖÃÀ´Ê¹Óá£ÔÚMySQLÖеĹú¼Ê»¯ºÍ±¾µØ»¯ÉèÖÃÓÐÒÔϼ¸·½ÃæÄÚÈÝ£º

    • Ê±Çø£¬Èç¹ûÊ±ÇøÉèÖò»¶Ô£¬Ôò·þÎñÆ÷ÏÔʾµÄʱ¼ä½«»áºÍµ±µØÊ±¼äÓгåÍ»¡£ÉèÖ÷½·¨¿Éͨ¹ýmysqld_safe½Å±¾µÄ--timezoneÑ¡ÏîÀ´ÉèÖ㬵«×îºÃ»¹ÊÇÔÚÑ¡ÏîÎļþÀïÉèÖã¬Èç:

      [mysqld_safe]
      timezone=US/Central
      
    • ÅäÖÃÏÔʾÐÅÏ¢µÄÓïÑÔ£¬MySQLÄÜÓöàÖÖÓïÑÔÀ´ÏÔʾÕï¶ÏÐÅÏ¢Óë³ö´íÐÅÏ¢£¬Ä¬ÈÏÊÇÓ¢Óï¡£²é¿´share/mysqlĿ¼ÏÂÓм¸¸öÒÔÓïÑÔÃû³Æ×÷ΪĿ¼ÃûµÄĿ¼¾Í¿ÉÖªµÀÓÐÄÄЩÓïÑԿɹ©Ñ¡Ôñ¡£¿ÉÓÃ--languageÆô¶¯Ñ¡ÏîÀ´Ö¸¶¨ÓïÑÔ£¬Èç--language=/usr/local/mysql/share/mysql/french¡£

    • ÅäÖ÷þÎñÆ÷µÄ×Ö·û¼¯£¬MySQLÖ§³Ö¶àÖÖ×Ö·û¼¯£¬¿ÉÔÚshare/mysql/charsetsĿ¼Ï²éѯ֧³ÖµÄ×Ö·û¼¯£¬Ò²¿ÉÓÃshow variables like 'character_sets'À´ÏÔʾ֧³ÖµÄ×Ö·û¼¯Çåµ¥¡£MySQL°Ñlatin1×÷ΪĬÈϵÄ×Ö·û¼¯¡£¿ÉÔÚ±àÒëʱÓÃ--with-charsetÖ¸¶¨ÁíÍâÒ»¸ö×Ö·û¼¯ÎªÄ¬ÈÏ×Ö·û¼¯¡£ÈçÒªÔö¼ÓÁíÍâµÄ×Ö·û¼¯Ö§³Ö£¬¿ÉÓÃ--with-extra-charasetsÑ¡Ïî½øÐÐÌí¼Ó¡£È磺

      % ./configure --with-extra-charsets=latin1,gb2312,big5
      

      --with-extra-charsetsÓÐÁ½¸öÌØÊâµÄÑ¡Ïһ¸öÊÇall£¬´ú±íËùÓпÉÓÃ×Ö·û¼¯£»Ò»¸öÊÇcomplex£¬´ú±íËùÓеĸ´ÔÓ×Ö·û¼¯(°üÀ¨¶à×Ö½Ú×Ö·û¼¯ºÍÓÐÌØÊâÅÅÐò¹æÔòµÄ×Ö·û¼¯)¡£

      ·þÎñÆ÷Æô¶¯Ê±£¬Ê¹ÓÃĬÈÏ×Ö·û¼¯£¬ÈçÐèÖ¸¶¨ÁíÍâµÄ×Ö·û¼¯£¬ÐèÓÃ--default-character-setÑ¡ÏîÖ¸Ã÷¡£

      ÔÚMySQL 4.1ÒÔǰ£¬Èç¹ûÔÚ´´½¨ºÃÊý¾Ý±íºó¸Ä±ä·þÎñÆ÷µÄĬÈÏ×Ö·û¼¯£¬¾ÍÐè¶ÔË÷ÒýÖØÐÂÅÅÐò²ÅÄܱ£Ö¤Ë÷Òý¼üÖµÄܹ»ÕýÈ··´Ó³³öÊý¾Ý±í¼Ç¼ÔÚÐÂ×Ö·û¼¯ÏµÄÅÅÁÐ˳Ðò¡£ÖØÐÂÅÅÐòµÄ²Ù×÷ÃüÁîÈçÏ£º

      % myisamchk --recover --quick --set-character-set=gb2312       #ÔÚÖ´ÐиÃÓï¾äÐè¹Ø±Õ·þÎñÆ÷£¬ÊÊÓÃÓÚMyISAMÊý¾Ý±í
      Ò²¿ÉÓãº
      % mysqlcheck --repair --quick                                  #²»Ðè¹Ø±Õ·þÎñÆ÷£¬ÊÊÓÃÓÚ¸÷ÖÖÊý¾Ý±í
      Șͧ
      mysql> REPLACE TABLE ... QUICK£»
      

      ÔÚ¿Í»§¶Ë£¬¿ÉÓÃ--default-character-setÑ¡ÏîÖ¸¶¨¿Í»§³ÌÐòʹÓõÄ×Ö·û¼¯¡£--character-sets-dirÑ¡Ïî¿ÉÖ¸³ö×Ö·û¼¯ÎļþµÄ°²×°Ä¿Â¼¡£

  • Éý¼¶Êý¾Ý±íµ½4.1£¬Ö§³Ö¶à×Ö·û¼¯Êý¾Ý±í¡£²½ÖèÈçÏ£º

    1. ÓÃmysqldump³ÌÐò±¸·ÝÊý¾Ý¿â£º

      % mysqldump -p -u root --all-databases --opt > dumpfile.sql
      --all-databasesÑ¡ÏîµÄ×÷ÓÃÊÇת´¢ËùÓÐÊý¾Ý¿â£»
      --optÑ¡ÏîµÄ×÷ÓÃÊǶÔת´¢Îļþ½øÐÐÓÅ»¯¡£
      
    2. ¹Ø±Õ·þÎñÆ÷£¬Éý¼¶MySQL·þÎñÆ÷Èí¼þµ½4.1°æ¡£

    3. Óñ¸·ÝÎļþÖØÐ¼ÓÔØÊý¾Ý±í£º

      % mysql -p -u root < dumpfile.sql
      

    ÕâÑù£¬×Ö·û¼¯ÐÅÏ¢¾Í±»·ÖÅ䵽ÿһ¸öÊý¾ÝÁÐÖУ¬´Ëºó£¬¼´Ê¹·þÎñÆ÷¸Ä±äÁËĬÈϵÄ×Ö·û¼¯£¬¸÷Êý¾ÝÁеÄ×Ö·û¼¯Ò²²»»á¸Ä±ä¡£µ±ÒÔºóÐÞ¸Äij¸öÊý¾ÝÁеÄ×Ö·û¼¯Ê±£¬·þÎñÆ÷»á×Ô¶¯ÖØË÷Òý£¬ÒÔ·´Ó³×îб仯¡£

  • ÅäÖÃInnoDB±í¿Õ¼ä¡£InnoDB±í¿Õ¼äÔÚÂß¼­ÉÏÊÇÒ»¸öÁ¬½ÓµÄ´æ´¢ÇøÓò£¬µ«Êµ¼ÊÉÏÊÇÓÉÒ»¸ö»ò¶à¸ö´ÅÅÌÎļþ×é³É¡£ÕâЩÎļþ¿ÉÒÔÊÇÆÕͨµÄÎļþ£¬Ò²¿ÉÒÔÊÇÒ»¸öδ¸ñʽ»¯µÄԭʼӲÅÌ·ÖÇø¡£InnoDB±í¿Õ¼äͨ¹ýһϵÁеÄÅäÖÃÑ¡ÏîÀ´ÉèÖã¬ÆäÖÐ×îÖØÒªµÄÓÐÒÔÏÂÁ½¸ö£º

    Ϊȷ±£·þÎñÆ÷ÿ´ÎÆô¶¯Ê±¶¼Äܵ÷ÓÃͬÑùµÄÑ¡ÏInnoDBµÄÑ¡Ïî×îºÃ´æ·Åµ½Ñ¡ÎļþÖС£ÏÂÃæÊÇÒ»¸öÀý×Ó£º

    innodb_data_home_dir = 
    innodb_data_file_path=/usr/loca/mysql/data/idbdata1:10M:autoextend:max:100M
    ˵Ã÷£º
    InnoDB±í¿Õ¼äÎļþĬÈÏ´æ·Åµ½ÁËMySQLµÄÊý¾ÝĿ¼ÖУ¬Ãû×Ö½Ðidbdata1£»
    Îļþ³¤¶ÈΪ10M£»
    ¿É×Ô¶¯À©Õ¹£¬ÒÔ8MΪ²½³¤À©Õ¹£¬ÈçÓжà¸öÊý¾ÝÎļþ£¬Ö»ÔÊÐí×îºóÒ»¸öÎļþ¿É×Ô¶¯À©Õ¹£»
    ¹æ¶¨ÁË×î´óµÄ¿ÉÀ©Õ¹³ß´çΪ100M¡£
    
    • innodb_data_home_dir£¬ÉèÖÃInnoDB±í¿Õ¼ä¸÷×é³ÉÎļþµÄ¸¸Ä¿Â¼£¬Èç¹ûûÓÐÖ¸³ö£¬ÔòĬÈÏÊÇMySQLµÄÊý¾ÝĿ¼¡£

    • innodb_data_file_path£¬ÃèÊöInnoDBÖ÷Ŀ¼Öи÷ÓйØÎļþ£¬°üÀ¨ÎļþÃû£¬Îļþ³¤¶ÈºÍһЩѡÏî¡£¸÷ÎļþÒԷֺŷָô£¬¸÷×é³ÉÎļþ³¤¶ÈÖÁÉÙΪ10M¡£

    °ÑÑ¡ÏîдÈëÑ¡ÏîÎļþºó£¬Æô¶¯·þÎñÆ÷¾Í¿É×Ô¶¯´´½¨ºÍ³õʼ»¯InnoDB±í¿Õ¼ä¡£

    ÀûÓÃԭʼ´ÅÅÌ·ÖÇø×÷ΪInnoDB±í¿Õ¼ä¿É´´½¨Ò»¸ö·Ç³£´óµÄ±í¿Õ¼ä£¬²»ÊܲÙ×÷ϵͳµ¥Îļþ×î´óÈÝÁ¿µÄÏÞÖÆ¡£²¢ÇÒÄÜÓÐЧ¼õÉÙ´ÅÅÌË鯬µÄ²úÉú¡£ÒªÊ¹ÓÃԭʼ´ÅÅÌ·ÖÇø£¬Ðè×÷ÈçÏÂÅäÖãº

    • Ê×ÏÈ£¬Òª½øÐгõʼ»¯£¬ÔÚÑ¡ÏîÎļþµÄ[mysqld]ÖÐÅäÖãº

      innodb_data_home_dir=
      innodb_data_file_path=/dev/hda1:10Gnewraw     #³õʼ»¯/dev/hda1Õâ¸ö10GÈÝÁ¿µÄ·ÖÇø
      

      Æô¶¯·þÎñÆ÷£¬·þÎñÆ÷»á¶ÔÕâ¸ö10GµÄ·ÖÇø½øÐгõʼ»¯¡£

    • ½Ó×Å£¬¹Ø±Õ·þÎñÆ÷£¬ÐÞ¸ÄÅäÖÃÎļþ£¬°Ñnewraw¸ÄΪraw£¬È磺

      innodb_data_home_dir=
      innodb_data_file_path=/dev/hda1:10Graw
      

    ÖØÐÂÆô¶¯·þÎñÆ÷£¬MySQL¾Í»áÒÔ¶Á/д·½Ê½Ê¹Óøñí¿Õ¼äÁË¡£ÔÚwindowsƽ̨ÉÏÅäÖÃInnoDB±í¿Õ¼äʱ£¬windows·¾¶ÃûÖеķ´Ð±¸Ü¿ÉÒÔд³Éµ¥¸öµÄбÏß×Ö·û(/)¡£Ò²¿Éд³ÉÁ½¸ö·´Ð±¸Ü(\\)¡£È磺

    innodb_data_home_dir=
    innodb_data_file_path=c:/mysql/data/ibdata1:10M;d:/ibdata2:20M
    

    ĬÈÏÇé¿öÏ£¬InnoDBµÄÈÕÖ¾Îļþ»á´æ´¢ÔÚMySQLµÄÊý¾ÝĿ¼£¬ÎļþÃûÒÔib¿ªÍ·¡£Ò»µ©Íê³ÉInnoDB±í¿Õ¼äµÄ³õʼ»¯£¬¾Í²»Äܸıä×é³ÉÎļþµÄ´óС£¬µ«¿Éͨ¹ýÌí¼ÓÊý¾ÝÎļþ»òÉèÖÃ×Ô¶¯À©Õ¹À´Ôö¼Ó±í¿Õ¼äÈÝÁ¿¡£ÈçÐèͨ¹ýÔö¼ÓÎļþµÄ·½·¨À©´ó±í¿Õ¼äµÄÈÝÁ¿£¬¿É°´ÒÔϲ½Öè½øÐУº

    1. ¹Ø±ÕÕýÔÚÔËÐеÄMySQL·þÎñÆ÷

    2. Èç¹ûInnoDB±í¿Õ¼äµÄ×îºóÒ»¸ö×é³ÉÎļþÊÇ¿É×ÔÀ©Õ¹µÄ£¬¾ÍÒªÏȰÑËü¸Ä±ä³ÉÒ»¸ö¹Ì¶¨³¤¶ÈÎļþ²ÅÄܰÑÁíÒ»¸öÎļþÌí¼Óµ½ËüºóÃæ¡£·½·¨ÊÇÏȼÆËã³ö¸ÃÎļþµÄ½üËÆ´óС£¬ÖØÐÂÉèÖã¬È磺

      innodb_data_file_path=ibdata1:100M:autoextend
      ¸Ä³É£º
      innodb_data_file_path=ibdata1:150M
      
    3. °ÑеÄ×é³ÉÎļþÌí¼Óµ½ÎļþÇåµ¥µÄĩ⣬¸ÃÎļþ¿ÉÒÔÊÇÆÕͨÎļþ£¬Ò²¿ÉÒÔÊÇÒ»¸öԭʼӲÅÌ·ÖÇø¡£

    4. ÖØÆô·þÎñÆ÷¡£

    »¹ÓÐÒ»ÖÖ·½·¨ÖØÐÂÅäÖÃInnoDB±í¿Õ¼ä£¬¾ÍÊÇÏȱ¸·Ý£¬ÔÙÖØÐÂÅäÖã¬×îºóÖØÐ¼ÓÔØ±¸·Ý¡£¾ßÌå²½ÖèÈçÏ£º

    1. ʹÓÃmysqldump±¸·ÝÕû¸öInnoDBÊý¾Ý¿â£»

    2. ¹Ø±Õ·þÎñÆ÷£¬É¾³ýËùÓÐInnoDB±í¿Õ¼ä¡¢InnoDBÈÕÖ¾Îļþ ¼°InnoDBÊý¾Ý±íµÄ.frmÎļþ£»

    3. ÖØÐÂÅäÖÃInnoDB±í¿Õ¼ä£»

    4. ÅäÖÃÍê³Éºó£¬Óñ¸·ÝÎļþÖØÔØÊý¾Ý£¬Éú³ÉеÄInnoDBÊý¾Ý±í¡£

4.7. ÓÅ»¯·þÎñÆ÷

MySQL·þÎñÆ÷ΪÎÒÃÇÌṩÁ˷ḻµÄ²ÎÊý£¬ÒÔµ÷Õû·þÎñÆ÷Âú×㲻ͬ»·¾³µÄÒªÇó¡£ÏÂÃæ·Ö±ðÌÖÂÛÒ»ÏÂÕâЩ²ÎÊý£º

  • ·þÎñÆ÷²ÎÊý±äÁ¿µÄÉèÖá£MySQL·þÎñÆ÷²ÎÊý¿ÉÔÚ·þÎñÆ÷Æô¶¯Ê±ÉèÖã¬ÔÚMySQL4.0.3¼°ÒÔºóµÄ°æ±¾ÖУ¬ÓÐЩ²ÎÊýÒ²ÔÊÐíÔÚÏßÉèÖá£ÔÚMySQL4.0.2¼°ÒÔºóµÄ°æ±¾À¿ÉÒÔ°ÑÒ»¸ö±äÁ¿ÃûÊÓΪһ¸öÑ¡ÏîÃûÀ´ÉèÖá£ÈçÊý¾Ý±í»º³åÇøµÄ³ß´çÓÉ·þÎñÆ÷²ÎÊýtalbe_cacheÀ´ÉèÖá£Èç¹ûÐè°ÑËüÉèÖÃΪ128,Ôò¿ÉÒÔÔÚÃüÁîÐÐÀïÔö¼Ó

    --table_cache=128
    

    Ò²¿ÉÔÚÑ¡ÏîÎļþÖÐÉèÖãº

    [mysqld]
    table_cache=128       
    

    ÔÚÃüÁîÐÐÑ¡ÏîÖÐ'_'¿Éд'-'£¬±ä³É£º

    --table-cache=128     #ÕâÖÖд·¨¸üÏñÒ»¸ö±ê׼ѡÏî
    

    »¹ÓÐÒ»ÖÖÊÇʹÓÃ--set-variable»ò-OÑ¡ÏÈ磺

    --set-variable=table_cache=128
    or
    -O table_cache=128
    ÔÚÑ¡ÏîÎļþÖпÉд³É£º
    [mysqld]
    set-variable=table_cache=128
    

    ·þÎñÆ÷²ÎÊý·ÖΪȫ¾Ö¼¶ºÍ»á»°¼¶Á½¸ö¼¶±ð¡£È«¾Ö¼¶²ÎÊý½«Ó°ÏìÕû¸ö·þÎñÆ÷£¬»á»°¼¶²ÎÊýÔòÖ»Ó°Ïìij¸ø¶¨¿Í»§Á¬½ÓÉϵŤ×÷¡£Èç¹ûij¸ö±äÁ¿Í¬Ê±´æÔÚÓÚÁ½¸ö¼¶±ð£¬Ôò·þÎñÆ÷ÔÚ¿Í»§½¨Á¢Á¬½ÓʱÓÃÈ«¾Ö±äÁ¿µÄֵȥ³õʼ»¯ÏàÓ¦µÄ»á»°¼¶²ÎÊý£¬Ò»µ©¿Í»§Á¬½Ó½¨Á¢ÆðÀ´ºó£¬¶ÔÈ«¾Ö²ÎÊýËù×÷µÄÐ޸IJ»»áÓ°Ïìµ½ÏàÓ¦µÄ»á»°¼¶²ÎÊýµ±Ç°Öµ¡£ÉèÖÃÈ«¾Ö²ÎÊýºÍ»á»°¼¶²ÎÊýµÄÓï¾ä£º

    È«¾Ö¼¶£º
    mysql> SET GLOBAL variable = value;
    mysql> SET @@GLOBAL.variable = value;
    »á»°¼¶£º
    mysql> SET SESSION variable = value;
    mysql> SET @@SESSION.variable = value;
    ĬÈϲ»´ø¼¶±ðÏÞ¶¨·ûµÄSETÓï¾äÐ޸ĵIJÎÊýÊô»á»°¼¶£¬È磺
    mysql> SET variable = value;
    mysql> SET @@variable = value;
    ¿ÉÓÃÒ»ÌõSETÓï¾äÉèÖöà¸ö²ÎÊý£¬²ÎÊý¼äÓöººÅ·Ö¸ô£¬È磺
    SET SESSION variable = value1,value2,value3;
    

    SESSIONºÍLOCALÊÇͬÒåÓ¿ÉÓÃLOCAL´úÌæSESSION£¬È磺@@LOCAL

    ¾ß±¸SUPERȨÏÞ²ÅÄÜÉèÖÃÈ«¾Ö²ÎÊý£¬ÐÂÉèÖÃÖµµÄЧÁ¦½«³ÖÐøµ½¸Ã²ÎÊý±»ÔÙ´ÎÐ޸Ļò·þÎñÆ÷Í˳ö¡£ÉèÖûỰ¼¶²ÎÊý²»ÓÃÌØÊâµÄȨÏÞ£¬ÐÂÉèÖÃÖµµÄЧÁ¦½«³ÖÐøµ½¸ÃÖµ±»ÔÙ´ÎÐ޸ĻòÁ¬½Ó¶Ï¿ª¡£ÏÔʾ²ÎÊýµÄÓï¾äÈçÏ£º

    SHOW GLOBAL VARIABLES;
    SHOW GLOBAL VARIABLES LIKE 'TEST';
    SHOW SESSION VARIABLES;
    SHOW SESSION VARIABLES LIKE 'TEST';
    Èç²»´øÏÞ¶¨·û£¬Ôò·µ»Ø»á»°¼¶²ÎÊý£¬Èç»á»°¼¶²ÎÊý²»´æÔÚÔò·µ»ØÈ«¾Ö¼¶²ÎÊý¡£
    Ò²¿ÉÓÃÃüÁîÐз½Ê½ÏÔʾ·þÎñÆ÷²ÎÊý±äÁ¿£¬È磺
    % mysqladmin variables
    
  • ÏÂÃæ½éÉÜһЩMySQL·þÎñÆ÷ͨÓõIJÎÊý±äÁ¿£º

    • back_log£¬µ±¶à¸ö¿Í»§Í¬Ê±Á¬½Ó·þÎñÆ÷ʱ£¬¿Í»§´¦Àí¹ý³ÌÐè½øÈëÒ»¸ö¶ÓÁÐÅŶӵȴý·þÎñÆ÷´¦Àí¡£¸ÃÖµ¶¨Òå·þÎñÆ÷µÈ´ý´¦Àí¶ÓÁг¤¶ÈµÄ×î´óÖµ£¬Èç¹ûÕ¾µã·ÃÎÊÁ¿´ó£¬Ðè¼Ó´ó¸ÃÖµ¡£

    • delayed_queue_size£¬ÔÚʵ¼Ê²åÈëÊý¾Ý±íǰ£¬À´×Ôinsert delayedÓï¾äµÄÊý¾ÝÐÐ»á½øÈëÒ»¸ö¶ÓÁеȴý·þÎñÆ÷´¦Àí¡£¸ÃÖµ¶¨Òå¸Ã¶ÓÁÐÄÜÈÝÄɵÄÊý¾ÝÐеÄ×î´ó¸öÊý¡£µ±¶ÓÁÐÂúʱ£¬»á×èÈûºóÐøµÄÓï¾ä¡£¼Ó´ó¸ÃÖµÄÜÌá¸ßinsert delayedÓï¾äµÄÖ´ÐÐËÙ¶È¡£

    • flush_time£¬×Ô¶¯´æÅ̼ä¸ô¡£Èç¹ûϵͳ¾­³£ËÀ»ú»òÖØÆô£¬°ÑÕâ¸ö±äÁ¿ÉèÖÃΪһ¸öÊʵ±µÄ·ÇÁãÖµ£¬Ê¹MySQL·þÎñÆ÷ÿ¸ôflush_time³ÆÈ¥Ë¢ÐÂÒ»´ÎÊý¾Ý±í»º³åÇø£¬½«ÆäÖеÄÐÅϢдÈë´ÅÅÌ¡£Õ⽫µ¼ÖÂϵͳÐÔÄÜϽµ£¬µ«¿É¼õÉÙÊý¾Ý±í±»ÆÆ»µ»ò¶ªÊ§Êý¾ÝµÄ¸ÅÂÊ¡£ÔÚÃüÁîÐÐÉÏÓÃ--flushÑ¡ÏîÆô¶¯·þÎñÆ÷¿ÉʹÊý¾Ý±íÔÚÿ´ÎÐ޸ĺó±»×Ô¶¯´æÅÌ¡£

    • key_buffer_size£¬ÓÃÀ´ÈÝÄÉË÷Òý¿éµÄ»º³åÇøµÄ³¤¶È¡£¼Ó´ó¸ÃÖµ¿É¼Ó¿ìË÷Òý´´½¨ºÍÐ޸IJÙ×÷µÄËÙ¶È£¬¸ÃË÷Òý»º³åÇøÔ½´ó£¬ÔÚÄÚ´æÖÐÕÒµ½¼üÖµµÄ¿ÉÄÜÐÔ¾ÍÔ½´ó£¬¶ÁÅÌ´ÎÊý¾ÍÔ½ÉÙ¡£MySQL3.23ǰµÄ°æ±¾À¸Ã²ÎÊý½Ðkey_buffer¡£3.23°æ±¾Ö®ºó£¬Á½Öֽз¨¶¼¿ÉÒÔ¡£

    • max_allowed_packet£¬·þÎñÆ÷Óë¿Í»§³ÌÐòÖ®¼äͨÐÅʱʹÓõĻº³åÇøÔÚ×î´óÖµ¡£MySQL 4°æ±¾Ö®Ç°£¬¸Ã×î´óÖµ¿ÉÈ¡16MB£¬MySQL 4°æ±¾ÒԺ󣬸ÃÖµµÄ×î´óÖµÊÇ1GB¡£Èç¹û¿Í»§¶ËÓë·þÎñÆ÷Ðè´«ËÍ´óÈÝÁ¿µÄÊý¾Ý£¬ÈçBLOB»òTEXTÖµ£¬¾ÍÒª¼Ó´ó¸ÃÖµ¡£¿Í»§¶ËÒ²ÓÐÒ»¸öͬÃûµÄ±äÁ¿£¬Ä¬ÈÏÊÇ16MB£¬¸ÃÖµÒ²Òª¼Ó´ó¡£¿Í»§¶ËµÄÆô¶¯ÃüÁîΪ£º

      % mysql --set-variable=max_allowed_packet=64M
      
    • max_connections£¬ÔÊÐíͬʱ´ò¿ªµÄÁ¬½ÓÊý£¬Èç¹ûÕ¾µã·±Ã¦£¬Ðè¼Ó´ó¸ÃÖµ¡£

    • table_cache£¬Êý¾Ý±í»º´æÇøµÄ³ß´ç¡£¼Ó´ó¸ÃÖµ¿Éʹ·þÎñÆ÷Äܹ»Í¬Ê±´ò¿ª¸ü¶àµÄÊý¾Ý±í£¬´Ó¶ø¼õÉÙÎļþ´ò¿ª/¹Ø±Õ²Ù×÷µÄ´ÎÊý¡£

    ×¢Ò⣺¼Ó´ómax_connectionsºÍtable_cache²ÎÊýµÄÖµ£¬»áʹ·þÎñÆ÷Õ¼Óøü¶àµÄÎļþÃèÊö·û¡£ÔËÐжà¸ö·þÎñÆ÷¿ÉÈÆ¹ý¸ÃÏÞÖÆ¡£¶ÔһЩ·ÖÅä¸øÃ¿¸ö¿Í»§µÄ×ÊÔ´±äÁ¿£¬ÉèÖÃʱ²»Äܹý´ó£¬ÒòΪµ±Á¬½ÓÊý¿ìËÙÔö³¤Ê±»áºÜ¿ìºÄ¾¡·þÎñÆ÷µÄ×ÊÔ´£¬Ôì³É·þÎñÆ÷ÐÔÄÜϽµ¡£

  • InnoDB´¦Àí³ÌÐò±äÁ¿£º

    • innodb_buffer_pool_size£¬InnoDBÊý¾Ý¿â»º³å³ØµÄ´óС£¬Èç¹ûÓÐ×ã¹»µÄÄڴ棬¿É°Ñ¸ÃÖµÉèÖõôóЩÒÔ¼õÉÙ¶ÁÅ̲Ù×÷¡£

    • innodb_log_file_sizeºÍinnodb_log_files_in_group£¬Ç°ÕßÉèÖÃÈÕÖ¾ÎļþµÄ³¤¶È£¬ºóÕßÉèÖÃÈÕÖ¾ÎļþµÄ¸öÊý¡£InnoDBÈÕÖ¾ÎļþµÄ×ܳ¤¶ÈÊÇÁ½Õߵij˻ý£¬ËüµÄ×ܳ¤¶È²»µÃ³¬¹ý4GB¡£

4.8. ÔËÐжà¸öMySQL·þÎñÆ÷

ÐèÔËÐжà¸ö·þÎñÆ÷µÄÔ­ÒòÓкܶ࣬±ÈÈçÉÏÃæÌáµ½µÄ¿ÉÈÆ¹ý×î´óÎļþÃèÊö·ûµÄÏÞÖÆ£¬»¹ÓÐÊǽøÐа汾²âÊÔºÍÌṩרÓ÷þÎñµÈ¡£ÔËÐжà¸ö·þÎñÆ÷±ÈÔËÐе¥¸ö·þÎñÆ÷¸´ÔӺܶ࣬Ðè×¢ÒâÒÔÏÂÎÊÌ⣺

  • ÔÚ°²×°²»Í¬°æ±¾µÄ³ÌÐòʱ£¬Ðè·Ö¿ªÄ¿Â¼´æ·Å³ÌÐòºÍÊý¾ÝĿ¼¡£Èç¹ûͬһ°æ±¾µÄ·þÎñÆ÷Èí¼þ£¬Ôò³ÌÐòĿ¼¿ÉÒ»Ñù£¬µ«Êý¾ÝĿ¼ÔòÒª²»Í¬¡£¿ÉÓÃ--basedir=dir_nameºÍ--datadir=dir_nameÁ½¸öÆô¶¯Ñ¡ÏîָʱÕâÁ½¸öĿ¼¡£

  • ҪΪ²»Í¬µÄ·þÎñÆ÷Ö¸¶¨²»Ê±µÄ--port=port_name(TCP/IP¼àÌý¶Ë¿Ú)£¬--socket=file_name(Ì×½Ó×ÖÎļþÃû)ºÍ--pid-file=file_name(½ø³ÌIDÎļþ)Öµ¡£

  • Èç¹û¼¤»îÁËÈÕÖ¾¹¦ÄÜ£¬¾ÍҪΪ²»Í¬µÄ·þÎñÆ÷Ö¸¶¨²»Í¬µÄÈÕÖ¾ÎļþÃû¡£

  • ÔÚWindowsƽ̨ÉÏ£¬±»°²×°Îª·þÎñµÄ¶à¸öMySQL·þÎñÆ÷±ØÐëÓв»Í¬µÄ·þÎñÃû¡£

¶à·þÎñÆ÷»·¾³ÏÂÑ¡ÏîÎļþµÄÅäÖ÷½·¨£º

  • ʹÓÃ--defaults-fileÑ¡ÏîÖ¸¶¨Ã¿¸öÑ¡ÏîÎļþ£¬ÕâÑù£¬Ã¿¸ö·þÎñÆ÷¾Í²»»áÈ¥¶Á/etc/my.cnfÕâЩÅäÖÃÎļþ£¬¶ø»áʹÓÃÄãËùÖ¸¶¨µÄÅäÖÃÎļþ¡£

  • ¿É°ÑһЩ¹«¹²µÄÑ¡Ïî·Åµ½/etc/my.cnfÎļþÀÔÙÓÃ--defaults-extra-fileÑ¡ÏîÖ¸³öÌØ¶¨·þÎñÆ÷µÄÌØ¶¨Ñ¡ÏîÎļþ¡£ÕâÑù¾Í²»ÓÃÔÚËùÓеÄÅäÖÃÎļþÊ±ÖØ¸´¹«¹²µÄÑ¡Ïî¡£

  • ÓÃmysql_multi½Å±¾Æô¶¯·þÎñÆ÷£¬ËüÔÊÐíÎÒÃǰÑËùÓеÄÑ¡Ïî·Åµ½Í¬Ò»¸öÑ¡ÏîÎļþÀÿһ¸ö·þÎñÆ÷¶ÔÓ¦¸ÃÎļþÖеÄÒ»¸öÑ¡Ïî×é¡£

    ÏÂÃæ½éÉÜÓÃmysql_multi½Å±¾Æô¶¯¶à·þÎñÆ÷µÄ·½·¨¡£

    1. Ϊÿ¸ö·þÎñÆ÷±àÒ»¸ö±àºÅxxx£¬¶ÔӦѡÏîÎļþµÄ[mysqldxxx]Ñ¡Ïî×é¡£mysql_multi±¾ÉíÒªÓõ½µÄÑ¡Ïî¿É·Åµ½[mysqld_multi]Àï¡£ÕâÑù/etc/my.cnfÑ¡ÏîÅäÖÃÎļþ¿´ÆðÀ´¾ÍÏóÏÂÃæÕâÑù£º

      [mysqld001]
      basedir=/usr/local/mysql/001
      datadir=/usr/local/mysql/001/data
      mysqld=/usr/local/mysql/001/bin/mysqld_safe
      socket=/usr/local/mysql/001/mysql.sock
      port=3306
      local-infile=1
      user=mysqladm
      log=log
      log-update=update-log
      innodb_data_file_path=ibdata1:10M
      
      [mysqld002]
      basedir=/usr/local/mysql/002
      datadir=/usr/local/mysql/002/data
      mysqld=/usr/local/mysql/002/bin/mysqld_safe
      socket=/usr/local/mysql/002/mysql.sock
      port=3307
      local-infile=1
      user=mysqladm
      log=log
      log-update=update-log
      innodb_data_file_path=ibdata1:10M
      
      ...
      
    2. ÅäÖúÃÑ¡ÏîÎļþºó£¬¾Í¿ÉÓÃÒÔÏÂÃüÁîÆô¶¯·þÎñÆ÷£º

      % mysqld_multi --no-log start 001,002      
      #Æô¶¯001ºÍ002Á½¸ö·þÎñÆ÷£¬²¢°ÑÆô¶¯ÐÅÏ¢·¢Ë͵½¿ØÖÆÌ¨£¬Ò²¿ÉÓÃÇø¼äµÄÐÎʽ¸ø³ö·þÎñÆ÷±àºÅ
      

      ÓÃÒÔÏÂÃüÁî¿É²é¿´·þÎñÆ÷״̬£º

      % mysqld_multi --no-log --user=root --password=password report 001
      

      ¿ÉÓÃÒÔÏÂÃüÁîÍ£Ö¹MySQL·þÎñÆ÷£º

      % mysqld_multi --no-log --user=root --password=password stop 001
      
  • ÔÚwindowsƽ̨ÏÂÔËÐжà¸öMySQL·þÎñÆ÷µÄ·½Ê½ÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇÔËÐÐͬһ¸öMySQL³ÌÐòµÄÁ½¸öʵÀý£¬Ò»ÖÖÊÇÔËÐжà¸öwindows·þÎñ£¬ÏÂÃæ·Ö±ð½éÉÜ£º

    • µÚÒ»ÖÖÇé¿öÐèÉèÖÃÁ½¸öÑ¡ÏîÎļþ£¬Ö¸¶¨²»Í¬µÄÊý¾ÝĿ¼£¬È磺

      c:\mysql\my.cnf1
      
      [mysqld]
      basedir=c:/mysql
      datedir=c:/mysql/data1
      port=3306
      
      c:\mysql\my.cnf2
      
      [mysqld]
      basedir=c:/mysql
      datadir=c:/mysql/data2
      port=3307
      

      ÔÚÆô¶¯·þÎñÆ÷ʱ£¬ÓÃ--defaults-fileÑ¡ÏîÖ¸³öÑ¡ÏîÎļþ¼´¿É¡£È磺

      c:\> mysqld --defaults-file=c:\mysql\my.cnf1
      c:\> mysqld --defaults-file=c:\mysql\my.cnf2
      
    • ÔÚMySQL 4.0.2°æ±¾¿ªÊ¼£¬¿ÉÒÔ°ÑMySQL°²×°ÎªÒ»¸ö·þÎñ£¬²¢¿ÉÖ¸¶¨Ò»¸ö·þÎñÃû£¬È磺

      c:\> mysql-nt --install service_name
      ÔÚMySQL 4.0.3¿ªÊ¼£¬°²×°·þÎñ»¹Ö§³Ö--defaults-file=file_nameÑ¡Ïî
      

      ÕâÑù£¬ÎÒÃǾͿɰÑMySQL°²×°ÎªÒ»ÏµÁв»Í¬µÄ·þÎñ£¬Èç¹û²»Ö¸¶¨service_name£¬Ôò°²×°µÄ·þÎñÃûĬÈÏΪMySql£¬Èç¹ûÖ¸¶¨service_name£¬Ôò°²×°µÄ·þÎñÃûΪָ¶¨µÄservice_name£¬²¢¶ÔӦѡÏîÎļþÖеÄ[service_name]Ñ¡Ïî×é¡£ÒÔĬÈÏ·þÎñÃûÔËÐеķþÎñÆ÷»¹Ö§³ÖÒ»¸öÃûΪMySqlµÄÃüÃû¹ÜµÀ£¬¶øÃ÷È·¸ø³ö·þÎñÃûµÄ·þÎñÆ÷½«Ö»¼àÌýTCP/IPÁ¬½Ó¶ø²»Ö§³ÖÃüÃû¹ÜµÀ--³ý·Ç»¹ÓÃsocketÑ¡ÏîÃ÷È·Ö¸¶¨Ò»¸öÌ×½Ó×ÖÎļþ¡£

      ÒÆ³ý·þÎñÐèÏÈÓÃmysqladmin shutdownÃüÁîÍ£µô·þÎñÆ÷£¬ÔÙÖ´ÐÐÒÔÏÂÃüÁ

      c:\> mysql-nt --remove                 #ÒÆ³ýĬÈϵķþÎñ
      c:\> mysql-nt --remove service_name    #ÒÆ³ýÖ¸¶¨·þÎñ
      

4.9. MySQL·þÎñÆ÷¾µÏñÅäÖÃ

ͨ¹ý¾µÏñ»úÖÆ¿É°ÑÊý¾Ý´ÓÒ»¸öµØ·½¸´ÖƵ½ÁíÒ»¸öµØ·½£¬²¢ÄÜʵÏÖͬ²½Á½¸ö»ò¶à¸öµØ·½µÄÊý¾Ý¡£MySQL·þÎñÆ÷Ò²Ö§³Ö¾µÏñ£¬´óÌá¸ßÊý¾ÝµÄ°²È«ÐÔºÍÎȶ¨ÐÔ¡£ÏÂÃæ½éÉÜÒ»ÏÂMySQLÊý¾ÝÖеľµÏñ»úÖÆ£º

  • ÔÚ¾µÏñ¹ØÏµÖУ¬Ò»¸öMySQL·þÎñÆ÷°çÑÝÖ÷·þÎñÆ÷½ÇÉ«£¬ÁíÍâÒ»¸ö»ò¶à¸ö·þÎñÆ÷°çÑÝ´Ó·þÎñÆ÷½ÇÉ«£¬´Ó·þÎñÆ÷ÖеÄÊý¾ÝºÍÖ÷·þÎñÆ÷ÖеÄÊý¾ÝÍêȫһÑù¡£

  • ÔÚ¾µÏñ½¨Á¢Ö®Ç°£¬Ö÷·þÎñÆ÷ºÍ´Ó·þÎñÆ÷±ØÐë½øÐÐÒ»´ÎÍêȫͬ²½¡£Í¬²½Ö®ºó£¬ÔÚÖ÷·þÎñÆ÷ÉÏËù×öµÄ²Ù×÷½«»áÔÚ´Ó·þÎñÆ÷ÉÏÔÙʵÏÖ£¬Ö÷·þÎñÆ÷ÉϵIJÙ×÷²»ÊÇÖ±½Ó×÷ÓÃÓÚ´Ó·þÎñÆ÷Éϵġ£

  • ¸ºÔðÔÚÖ÷¡¢´Ó·þÎñÆ÷ÉÏ´«Êä¸÷ÖÖÐ޸͝×÷µÄý½éÊÇÖ÷·þÎñÆ÷ÉϵĶþ½øÖƱä¸üÈÕÖ¾£¬¸ÃÈÕÖ¾¼Ç¼×ÅÖ÷·þÎñÆ÷ÉÏËùÓеIJÙ×÷¶¯×÷¡£Òò´Ë£¬Ö÷·þÎñÆ÷±ØÐ뼤»î¶þ½øÖÆÈÕÖ¾¹¦ÄÜ¡£

  • ´Ó·þÎñÆ÷±ØÐëÓÐ×ã¹»µÄȨÏÞ´ÓÖ÷·þÎñÆ÷ÉϽÓÊÕ¶þ½øÖÆÈÕÖ¾Îļþ¡£¾µÏñЭµ÷ÐÅÏ¢¼Ç¼´Ó·þÎñÆ÷µÄ½øÕ¹Çé¿ö£¬°üÀ¨£¬´Ó·þÎñÆ÷ÕýÔÚ¶ÁÈ¡µÄ¶þ½øÖƱä¸üÈÕÖ¾ÎļþÃûºÍËüÔÚ¸ÃÎļþÀïµÄµ±Ç°¶ÁдλÖá£

  • ÿ¸öÖ÷·þÎñÆ÷¿ÉÒÔÓжà¸ö´Ó·þÎñÆ÷£¬µ«Ã¿¸ö´Ó·þÎñÆ÷Ö»ÄÜÓÐÒ»¸öÖ÷·þÎñÆ÷¡£µ«MySQL·þÎñÆ÷ÔÊÐí°ÑÒ»¸ö´Ó·þÎñÆ÷×÷ΪÁíÒ»¸ö´Ó·þÎñÆ÷µÄÖ÷·þÎñÆ÷£¬ÕâÑù¾Í¿É´´½¨Ò»¸ö¾µÏñ·þÎñÆ÷Á´¡£

¾µÏñ»úÖÆÔÚMySQLÖл¹ÊÇÒ»¸öÐÂÉúÊÂÎ×îÔçʵÏÖÓÚ3.23.15°æ¡£¸÷°æ±¾¼äµÄ¾µÏñÄÜÁ¦ÓвîÒ죬һ°ãÀ´Ëµ£¬½¨Òé´ó¼Ò¾¡Á¿Ê¹ÓÃ×îеİ汾£¬ÏÂÃæÁоÙÁ˲»Í¬°æ±¾µÄMySQL·þÎñÆ÷ÔÚ¾µÏñ»úÖÆ·½ÃæµÄ¼æÈݹæÔò£º

  • 3.23.xϵͳ°æ±¾µÄ´Ó·þÎñÆ÷²»ÄÜÓë4.xϵͳ°æ±¾µÄÖ÷·þÎñÆ÷ͨÐÅ¡£

  • 4.0.0°æ±¾µÄ´Ó·þÎñÆ÷Ö»ÄÜÓë4.0.0°æ±¾µÄÖ÷·þÎñÆ÷ͨÐÅ¡£

  • 4.0.1»ò¸ü¸ß°æ±¾µÄ´Ó·þÎñÆ÷¼ÈÄÜÓë3.23.xϵͳ°æ±¾µÄÖ÷·þÎñÆ÷ͨÐÅ£¬Ò²ÄÜÓë4.xϵͳ°æ±¾µÄÖ÷·þÎñÆ÷ͨÐÅ¡£µ«ºóÒ»ÖÖÇé¿öÒªÇóÖ÷·þÎñÆ÷µÄ°æ±¾ºÅµÈÓÚ»ò´óÓÚ´Ó·þÎñÆ÷µÄ°æ±¾ºÅ¡£

Ò»°ãÀ´Ëµ£¬½¨Òé×ñÑ­ÒÔÏÂÔ­Ôò£º

  • Òª¾¡¿ÉÄܵØÈÃÖ÷·þÎñÆ÷ºÍ´Ó·þÎñÆ÷¶¼Ê¹ÓÃͬһ°æ±¾ÏµÍ³¡£

  • ÔÚÑ¡¶¨ÏµÍ³ºó£¬¾¡Á¿Ê¹ÓøÃϵͳµÄ×îа汾¡£

½¨Á¢Ö÷´Ó¾µÏñ·þÎñÆ÷µÄ²½Ö裺

  • È·¶¨Ö÷´Ó·þÎñÆ÷µÄ¾µÏñIDºÅ£¬Ö÷´Ó·þÎñÆ÷µÄIDºÅ²»ÄÜÏàͬ¡£ÔÚÆô¶¯Ö÷´Ó·þÎñÆ÷ʱ£¬ÓÃ--server_idÆô¶¯Ñ¡Ïî¸ø³öÆäID¡£

  • ´Ó·þÎñÆ÷±ØÐëÔÚÖ÷·þÎñÆ÷ÉÏÓÐÒ»¸ö¾ß±¸×ã¹»µÄȨÏÞµÄÕÊ»§£¬´Ó·þÎñÆ÷½«Ê¹ÓøÃÕÊ»§È¥Á¬½ÓÖ÷·þÎñÆ÷²¢ÇëÇóÖ÷·þÎñÆ÷°Ñ¶þ½øÖƱä¸üÈÕÖ¾·¢Ë͸øËü¡£¿ÉÓÃÒÔÏÂÃüÁî´´½¨Õâ¸öÕÊ»§£º

    mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'slave_host' IDENTIFIED BY 'slave_pass';
    #REPLICATIONȨÏÞÖ»MySQL4.0.2ºó°æ±¾£¬Ö®Ç°µÄ°æ±¾ÇëÓÃFILEȨÏÞ¡£
    
  • °ÑÖ÷·þÎñÆ÷ÉϵÄÊý¾Ý¿âÎļþ¿½±´µ½´Ó·þÎñÆ÷ÉÏÍê³É×î³õͬ²½¹¤×÷¡£Ò²¿ÉÓñ¸·ÝºóÔÙ¼ÓÔØµÄ·½·¨¡£ÔÚMySQL 4.0.0¼°ÒÔºó°æ±¾À»¹¿ÉÓÃÔÚÖ÷·þÎñÆ÷ÉÏÔËÐÐLOAD DATA FROM MASTERÓï¾äÀ´½¨Á¢´Ó·þÎñÆ÷¡£µ«ÓÐÔ¼ÊøÌõ¼þ£º

    • Êý¾Ý±íҪȫ²¿ÊÇMyISAM±í

    • Ϊ·¢³öÕâÌõÖ¸Áî¶øÔÚÁ¬½Ó´Ó·þÎñÆ÷ʱʹÓõÄÕÊ»§±ØÐëÓÐSUPERȨÏÞ¡£

    • ´Ó·þÎñÆ÷ÓÃÀ´Á¬½ÓÖ÷·þÎñÆ÷µÄÕÊ»§±ØÐë¾ß±¸RELOADºÍSUPERȨÏÞ¡£×¢Ò⣬ÕâÊÇÒ»¸öÖ÷·þÎñÆ÷ÉϵÄÕÊ»§£¬¶øÓÃÀ´·¢³öLOAD DATA FROM MASTERÓï¾äµÄÕÊ»§ÊÇÒ»¸ö´Ó·þÎñÆ÷ÉϵÄÕÊ»§¡£

    • LOAD DATA FROM MASTERÓï¾äÔÚÖ´ÐÐʱÐèÉêÇëÒ»¸öÈ«¾ÖÐԵĶÁ²Ù×÷Ëø£¬Õâ¸öËøÔÚÓï¾äÖ´ÐÐÆÚ¼ä×èÈûÖ÷·þÎñÆ÷ÉÏÒ»ÇеÄд²Ù×÷¡£

    ÎÞÂÛÓÃÄÄÖÖ·½·¨Í¬²½Êý¾Ý£¬¶¼ÒªÈ·±£ÔÚ¿ªÊ¼ÖÆ×÷±¸·Ýµ½¸øÖ÷·þÎñÆ÷ÖØÐÂÅäÖúöþ½øÖÆÈÕÖ¾¹¦ÄÜÕâ¶Îʱ¼ä£¬²»ÄÜÔÚÖ÷·þÎñÆ÷ÉÏ·¢ÉúÐ޸IJÙ×÷¡£

  • ¹Ø±Õ·þÎñÆ÷¡£

  • ¶ÔÖ÷·þÎñÆ÷µÄÅäÖýøÐÐÐÞ¸Ä--°ÑËüµÄ¾µÏñID¸æËßËü²¢¼¤»îÆä¶þ½øÖÆÈÕÖ¾¹¦ÄÜ¡£ÔÚÖ÷·þÎñÆ÷Òª¶ÁÈ¡µÄÑ¡ÏîÎļþÄÚÔö¼ÓÒÔÏÂÄÚÈÝ£º

    [mysqld]
    server-id=master_server_id
    log-bin=binlog_name
    
  • ÖØÐÂÆô¶¯Ö÷·þÎñÆ÷£¬´ÓÏÖÔÚ¿ªÊ¼£¬Ëü½«°Ñ¿Í»§¶ÔÊý¾Ý¿âµÄÐ޸IJÙ×÷¼Ç¼µ½¶þ½øÖƱä¸üÈÕÖ¾Àï¡£Èç¹ûÔÚ´Ë֮ǰÒѾ­¼¤»îÁ˶þ½øÖÆÈÕÖ¾¹¦ÄÜ£¬ÔòÒªÔÚÖØÆôǰ°Ñ¶þ½øÖƱä¸üÈÕÖ¾±¸·ÝÏÂÀ´£¬ÔÚÖØÆôºóÔÙ·¢Ò»ÌõRESET MASTERÓï¾äÈ¥Çå³ýÏÖÓеĶþ½øÖƱä¸üÈÕÖ¾¡£

  • ¹Ø±Õ´Ó·þÎñÆ÷¡£

  • ¶Ô´Ó·þÎñÆ÷½øÐÐÅäÖã¬Ê¹ËüÖªµÀ×ÔÒѵľµÏñID£¬µ½ÄÄÀïÈ¥ÕÒÖ÷·þÎñÆ÷ÒÔ¼°ÈçºÎÈ¥Á¬½ÓÖ÷·þÎñÆ÷¡£ÅäÖÃÄÚÈÝÈçÏ£º

    [mysqld]
    server-id=slave_server_id
    master-host=master_host
    master-user=slave_user          #ÔÚÖ÷·þÎñÆ÷ÉÏΪ´Ó·þÎñÆ÷½¨Á¢µÄÕÊ»§
    msater-password=slave_pass      #ÔÚÖ÷·þÎñÆ÷ÉÏΪ´Ó·þÎñÆ÷½¨Á¢µÄÕÊ»§µÄÃÜÂë
    master-connet-retry=30         #ÉèÖÃÁ¬½ÓÖØÊÔ¼ä¸ô£¬Ä¬ÈÏΪ60Ãë
    master-retry-count=100000       #ÉèÖÃÖØÊÔ´ÎÊý£¬Ä¬ÈÏΪ86400´Î
    ×¢£º×îºóÁ½¸öÑ¡ÏîÔÚÍøÂçÁ¬½Ó²»¿É¿¿Ê±ÉèÖÃ
    
  • ÖØÐÂÆô¶¯´Ó·þÎñÆ÷¡£´Ó·þÎñÆ÷ÓÃÁ½¸öÐÅÏ¢Ô´À´È·¶¨Ëü×ÔÒÑÔÚ¾µÏñ¹¤×÷ÖеĽø¶ÈλÖãºÒ»¸öÊÇÊý¾ÝĿ¼ÖеÄmaster.infoÎļþ£¬ÁíÒ»¸öÊÇÆô¶¯Ñ¡ÏîËù¸ø¶¨µÄÅäÖÃÐÅÏ¢¡£µÚÒ»´ÎÆô¶¯´Ó·þÎñÆ÷ʱ£¬master.infoÎļþ²»´æÔÚ£¬´Ó·þÎñÆ÷»á¸ù¾ÝÑ¡ÏîÎļþÖиø³öµÄ¸÷ÖÖmaster-xxxÑ¡ÏîֵȥÁ¬½ÓÖ÷·þÎñÆ÷¡£Ò»µ©Á¬½Ó³É¹¦£¬´Ó·þÎñÆ÷»á´´½¨Ò»¸ömaster.infoÎļþÒÔ±£´æ¸÷ÖÖÁ¬½Ó²ÎÊýºÍËü×ÔÒѵľµÏñ¹¤×÷״̬¡£Èç¹ûÒÔºóÔÙÖØÆô´Ó·þÎñÆ÷£¬´Ó·þÎñÆ÷»áÓÅÏȶÁÈ¡¸ÃÎļþ£¬¶ø²»ÊÇÑ¡ÏîÎļþ¡£ËùÒÔÈç¹ûÄãÐÞ¸ÄÁËÑ¡ÏîÎļþµÄÄÚÈÝ£¬Ïë¸ÃÑ¡ÏîÉúЧ¾ÍҪɾ³ýmaster.infoÎļþ²¢ÖØÆô´Ó·þÎñÆ÷¡£

ÒÔÉϲ½ÖèÊǾµÏñËùÓÐÊý¾Ý¿âµÄ²Ù×÷¹ý³Ì£¬Èç¹ûÎÒÃÇÏë°ÑmysqlȨÏÞÊý¾Ý±£ÁôÔÚÖ÷·þÎñÆ÷ÉÏ£¬ÅųýÔÚ¾µÏñ»úÖÆÍâµÄ»°£¬¿ÉÓÃÔÚÑ¡ÏîÎļþµÄ[mysqld]ÖмÓÈë--binlog-ignore-db=mysqlÑ¡ÏÕâÑù£¬mysqlÊý¾Ý¿âÉϵIJÙ×÷¾Í²»»á¼Ç¼ÔÚ¶þ½øÖƱä¸üÈÕÖ¾Àï¡£ÈçÒªÅųýÆäËüÊý¾Ý¿â£¬Ö»ÒªÔö¼Ó¶à¼¸¸ö¸ÃÑ¡Ïî¼´¿É¡£

ͨ¹ýÒÔϼ¸¸öÃüÁî¿É¼à¿ØºÍ¹ÜÀíÖ÷´Ó·þÎñÆ÷£º

  • SLAVE STOP£¬SLAVE STARTÓÃÓÚ¹ÒÆðÀ´»Ö¸´´Ó·þÎñÆ÷ÉϾµÏñ£¬Èçµ±±¸·Ýʱ£¬¿ÉÓøÃÓï¾äÈôӷþÎñÆ÷ÔÝʱֹͣ¾µÏñ»î¶¯¡£

  • SHOW SLAVE STATUS£¬ÔÚ´Ó·þÎñÆ÷Éϲ鿴Æä¾µÏñЭµ÷ÐÅÏ¢£¬ÕâЩÐÅÏ¢¿ÉÒÔÓÃÀ´ÅжÏÄÄЩ¶þ½øÖƱä¸üÈÕÖ¾ÒѾ­²»ÔÙʹÓá£

  • PURGE MASTER£¬ÔÚÖ÷·þÎñÆ÷É϶Զþ½øÖƱä¸üÈÕÖ¾½øÐÐʧЧ´¦Àí¡£É¾³ýËùÓдӷþÎñÆ÷¶¼²»ÔÙʹÓõĶþ½øÖƱä¸üÈÕÖ¾¡£

  • CHANGE MASTER£¬ÔÚ´Ó·þÎñÆ÷ÉÏÐ޸ľµÏñ²ÎÊý¡£ÈçÕýÔÚ¶ÁÈ¡Ö÷·þÎñÆ÷ÉÏÄĸö¶þ½øÖƱä¸üÈÕÖ¾£¬ÕýÔÚдÄĸöÖмÌÈÕÖ¾ÎļþµÈ¡£

ÔÚMySQL4.0.2Ö®ºó°æ±¾ÖУ¬¾µÏñ»úÖÆÖеĴӷþÎñÆ÷ÓÉÁ½¸öÄÚ²¿Ïß³Ì×é³É£º

  • Ò»¸ö½Ð¡°I/OÏ̡߳±£¬¸ºÔðÓëÖ÷·þÎñÆ÷ͨÐÅ£¬ÇëÇóÖ÷·þÎñÆ÷·¢ËͶþ½øÖƱä¸üÈÕÖ¾£¬²¢°Ñ½ÓÊÕµ½µÄÊý¾ÝÐÞ¸ÄÃüÁîдÈëij¸öÖмÌÈÕÖ¾Îļþ£»ÓÃSLAVE STOP IO_THREAD»òSLAVE START IO_THREAD¿É¹ÒÆð»ò»Ö¸´¸ÃÏ̡߳£

  • ÁíÒ»¸ö½Ð¡°SQLÏ̡߳±£¬¸ºÔð´ÓÖмÌÈÕÖ¾ÖжÁÈ¡Êý¾ÝÐÞ¸ÄÃüÁî²¢Ö´ÐС£Í¬Àí£¬ÓÃSLAVE STOP SQL_THREAD»òSLAVE START SQL_THREAD¿É¹ÒÆð»ò»Ö¸´¸ÃÏ̡߳£

ÖмÌÈÕÖ¾ÎļþĬÈϵÄÎļþΪhostname-relay-bin.nnnºÍhostname-relay-bin.index¡£¿ÉÓôӷþÎñÆ÷µÄ--relay-logºÍ--relay-log-indexÑ¡ÏîÐ޸ġ£ÔÚ´Ó·þÎñÆ÷Öл¹ÓÐÒ»¸örelay-log.infoÖмÌÐÅÏ¢Îļþ£¬¿ÉÓÃ--relay-log-info-fileÆô¶¯Ñ¡ÏîÐÞ¸ÄÎļþÃû¡£

Chapter 5. Êý¾Ý¿â°²È«

°²È«ÊÇÒ»¸ö¹ý³Ì£¬¶ø²»ÊÇÒ»¸ö·½·¨£¬Ëü¹á´©ÔÚÎÒÃÇʹÓúÍά»¤MySQLÊý¾Ý¿âµÄ¹ý³ÌÖС£Õâ²»µ¥ÊÇϵͳ¹ÜÀíÔ±¹¤×÷£¬Óû§Ò²ÒªÓа²È«µÄÒâʶ£¬Ê¹°²È«ÎÊÌâµÃµ½ÓÐЧ¿ØÖÆ¡£MySQL·þÎñÆ÷µÄ°²È«ÎÊÌâ¿É·ÖΪÄÚ²¿°²È«ºÍÍⲿ°²È«Á½²¿·Ý¡£ÄÚ²¿°²È«ÎÊÌâ´ó¶¼ÓëϵͳÎļþÓйأ¬ÎÒÃÇÐèÈ·±£MySQL³ÌÐòÎļþºÍÊý¾ÝÎļþµÄ°²È«¡£Íⲿ°²È«ÊÇָͨ¹ýÍøÂçÁ¬½Óµ½·þÎñÆ÷µÄ°²È«ÎÊÌ⣬Ӧ¸ÃÖ»ÔÊÐíºÏ·¨Óû§·ÃÎÊÊý¾Ý¿â£¬ÔÚһЩÇé¿öÏ»¹¿ÉÓÃSSL¼ÓÃÜÐÅÏ¢´«ÊäͨµÀ¡£Ï·ֱð½éÉÜÄÚ²¿°²È«ºÍÍⲿ°²È«µÄ·À·¶´ëÊ©¡£

5.1. ±£»¤MySQL°²×°³ÌÐòÎļþ

  • ÔÚÖØÉèÖÃÎļþȨÏÞʱ£¬ÇëÏȹرÕÊý¾Ý¿â·þÎñÆ÷¡£

  • ÓÃÒÔÏÂÃüÁî°ÑMySQL°²×°³ÌÐòĿ¼µÄÊôÖ÷ºÍËùÊô×éÉèÖÃΪMySQL¹ÜÀíÔ±ÕʺŵÄÓû§ÃûºÍÓû§×éÃû¡£

    % chown -R mysql.mysql /usr/local/mysql
    

    ÁíÍâÒ»ÖÖ·½·¨ÊǰѳýÊý¾ÝĿ¼ÍâµÄËùÓÐĿ¼ÊôÖ÷ÉèÖÃΪrootËùÓУ¬È磺

    % chown -R root.mysql /usr/local/mysql
    % chown -R mysql.mysql /usr/local/mysql/data
    
  • ÉèÖð²×°Ä¿Â¼¼°¸÷ÓйØ×ÓĿ¼µÄȨÏÞ£¬ÔÊÐí¹ÜÀíÔ±½øÐÐËùÓвÙ×÷£¬Ö»ÔÊÐíÆäËûÈ˽øÐжÁºÍÖ´ÐзÃÎÊ£¬ÉèÖÃÃüÁîÈçÏ£º

    #ÉèÖÃmysqlĿ¼
    % chmod 755 /usr/local/mysql
    or
    % chmod u=rwx,go=rx /usr/local/mysql
    #ÉèÖÃmysql/binĿ¼
    % chmod 755 /usr/local/mysql/bin
    or
    % chmod u=rwx,go=rx /usr/local/mysql/bin
    #ÉèÖÃmysql/libexecĿ¼
    % chmod 700 /usr/local/mysql/libexec
    or
    % chmod u=rwx,go-rwx /usr/local/mysql/libexec
    
  • °ÑÊý¾ÝĿ¼¼°Ä¿Â¼ÖеÄËùÓÐ×ÓĿ¼ºÍÎļþÉèÖÃΪֻÔÊÐíMySQL¹ÜÀíÔ±·ÃÎÊ¡£

    % chmod -R go-rwx /usr/local/mysql/data
    

    Èç¹ûÊý¾ÝĿ¼ÏÂÓÐÑ¡ÏîÎļþ»òÌ×½Ó×ÖÎļþ£¬²¢Ò»Ð©¿Í»§Ðè·ÃÎÊÕâЩÎļþ£¬Ôò¿ÉÓÃÒÔϵÄȨÏÞÉèÖã¬Ê¹¿Í»§ÔÚûÓжÁȨÏÞµÄǰÌáÏÂʹÓÃÕâЩÎļþ£º

    % chmod go+x /usr/local/mysql/data
    
  • mysql.sockÌ×½Ó×ÖÎļþÒ»°ã·ÅÒÔ/tmpĿ¼Ï£¬ÒªÈ·±£¸ÃĿ¼ÉèÖÃÁËÕ³×Åλ£¬Ê¹×Ô»§Ö»ÄÜɾ³ý×ÔÒÑ´´½¨µÄÎļþ£¬²»ÄÜɾ³ýÆäËûÓû§´´½¨µÄÎļþ¡£/etc/my.cnfÖй«¹²Ñ¡ÏîÎļþ£¬ÊǶÔËùÓÐÓû§¿É¶ÁµÄ£¬ËùÒÔ²»Ó¦°ÑһЩÃô¸ÐÐÅÏ¢±£´æÔÚÀïÃæ¡£.my.cnfÊÇÓû§×¨ÓÃÑ¡ÏîÎļþ£¬ÒªÈ·±£Ö»ÓиÃÓû§ÓÐȨ·ÃÎÊ¡£

  • ÕâÑùÉèÖÃÒÔºó£¬Ö»ÓÐMySQL¹ÜÀíÔ±²ÅÄÜÆô¶¯·þÎñÆ÷¡£

5.2. ȨÏÞ±í

MySQL·þÎñÆ÷ͨ¹ýȨÏÞ±íÀ´¿ØÖÆÓû§¶ÔÊý¾Ý¿âµÄ·ÃÎÊ£¬È¨ÏÞ±í´æ·ÅÔÚmysqlÊý¾Ý¿âÀÓÉmysql_install_db½Å±¾³õʼ»¯¡£ÕâЩȨÏÞ±í·Ö±ðuser£¬db£¬table_priv£¬columns_privºÍhost¡£ÏÂÃæ·Ö±ð½éÉÜÒ»ÏÂÕâЩ±íµÄ½á¹¹ºÍÄÚÈÝ£º

  • userȨÏÞ±í£º¼Ç¼ÔÊÐíÁ¬½Óµ½·þÎñÆ÷µÄÓû§ÕʺÅÐÅÏ¢£¬ÀïÃæµÄȨÏÞÊÇÈ«¾Ö¼¶µÄ¡£

  • dbȨÏÞ±í£º¼Ç¼¸÷¸öÕʺÅÔÚ¸÷¸öÊý¾Ý¿âÉϵIJÙ×÷ȨÏÞ¡£

  • table_privȨÏÞ±í£º¼Ç¼Êý¾Ý±í¼¶µÄ²Ù×÷ȨÏÞ¡£

  • columns_privȨÏÞ±í£º¼Ç¼Êý¾ÝÁм¶µÄ²Ù×÷ȨÏÞ¡£

  • hostȨÏÞ±í£ºÅäºÏdbȨÏÞ±í¶Ô¸ø¶¨Ö÷»úÉÏÊý¾Ý¿â¼¶²Ù×÷ȨÏÞ×÷¸üϸÖµĿØÖÆ¡£Õâ¸öȨÏÞ±í²»ÊÜGRANTºÍREVOKEÓï¾äµÄÓ°Ïì¡£

´ó¼Ò×¢Òâµ½£¬ÒÔÉÏȨÏÞûÓÐÏÞÖÆµ½Êý¾ÝÐм¶µÄÉèÖá£ÔÚMySQLֻҪʵÏÖÊý¾ÝÐм¶¿ØÖƾÍҪͨ¹ý±àд³ÌÐò(ʹÓÃGET-LOCK()º¯Êý)À´ÊµÏÖ¡£

MySQLµÄ°æ±¾ºÜ¶à£¬ËùÒÔȨÏÞ±íµÄ½á¹¹ÔÚ²»Í¬°æ±¾¼ä»áÓв»Í¬¡£Èç¹û³öÏÖÕâÖÖÇé¿ö£¬¿ÉÓÃmysql_fix_privilege_tables½Å±¾À´ÐÞÕý¡£ÔËÐз½Ê½ÈçÏ£º

% mysql_fix_privilege_tables rootpassword            #ÕâÀïÒª¸ø³öMySQLµÄrootÓû§ÃÜÂë

×îºÃÒ»ÏÂ×ÓÉý¼¶µ½MySQL 4.0.4°æ±¾£¬ÒòΪ4.0.2ºÍ4.0.3µÄdb±íûÓÐCreate_tmp_table_privºÍLock_tables_privȨÏÞ¡£

MySQLµÄȨÏÞ±í¶¨ÒåÁËÁ½²¿·ÝÄÚÈÝ£¬Ò»¸ö²¿·Ý¶¨ÒåȨÏ޵ķ¶Î§£¬¼´Ë­(ÕÊ»§)¿ÉÒÔ´ÓÄÄÀï(¿Í»§¶ËÖ÷»ú)·ÃÎÊʲô(Êý¾Ý¿â¡¢Êý¾Ý±í¡¢Êý¾ÝÁÐ)£»ÁíÒ»²¿·Ý¶¨ÒåȨÏÞ£¬¼´¿ØÖÆÓû§¿ÉÒÔ½øÐеIJÙ×÷¡£ÏÂÃæÊÇһЩ³£ÓõÄȨÏÞ½éÉÜ£¬¿ÉÖ±½ÓÔÚGRANTÓï¾äÖÐʹÓá£

  • CREATE TEMPORARY TABLES£¬ÔÊÐí´´½¨ÁÙʱ±íµÄȨÏÞ¡£

  • EXECUTE£¬ÔÊÐíÖ´Ðд洢¹ý³ÌµÄȨÏÞ£¬´æ´¢¹ý³ÌÔÚMySQLµÄµ±Ç°°æ±¾Öл¹Ã»ÊµÏÖ¡£

  • FILE£¬ÔÊÐíÄãͨ¹ýMySQL·þÎñÆ÷È¥¶Áд·þÎñÆ÷Ö÷»úÉϵÄÎļþ¡£µ«ÓÐÒ»¶¨ÏÞÖÆ£¬Ö»ÄÜ·ÃÎʶÔÈκÎÓû§¿É¶ÁµÄÎļþ£¬Í¨¹ý·þÎñÆ÷дµÄÎļþ±ØÐëÊÇÉÐδ´æÔڵģ¬ÒÔ·ÀÖ¹·þÎñÆ÷дµÄÎļþ¸²¸ÇÖØÒªµÄϵͳÎļþ¡£¾¡¹ÜÓÐÕâЩÏÞÖÆ£¬µ«ÎªÁ˰²È«£¬¾¡Á¿²»Òª°Ñ¸ÃȨÏÞÊÚÓèÆÕͨÓû§¡£²¢ÇÒ²»ÒªÒÔrootÓû§À´ÔËÐÐMySQL·þÎñÆ÷£¬ÒòΪrootÓû§¿ÉÔÚϵͳÈκεط½´´½¨Îļþ¡£

  • GRANT OPTION£¬ÔÊÐí°ÑÄã×ÔÒÑËùÓµÓеÄȨÏÞÔÙתÊÚ¸øÆäËûÓû§¡£

  • LOCK TABLES£¬¿ÉÒÔʹÓÃLOCK TABLESÓï¾äÀ´Ëø¶¨Êý¾Ý±í

  • PROCESS£¬ÔÊÐíÄã²é¿´ºÍÖÕÖ¹Èκοͻ§Ï̡߳£SHOW PROCESSLISTÓï¾ä»òmysqladmin processlistÃüÁî¿É²é¿´Ị̈߳¬KILLÓï¾ä»òmysqladmin killÃüÁî¿ÉÖÕÖ¹Ï̡߳£ÔÚ4.0.2°æ¼°ÒÔºóµÄ°æ±¾ÖУ¬PROCESSȨÏÞֻʣϲ鿴Ï̵߳ÄÄÜÁ¦£¬ÖÕÖ¹Ï̵߳ÄÄÜÁ¦ÓÉSUPERȨÏÞ¿ØÖÆ¡£

  • RELOAD£¬ÔÊÐíÄã½øÐÐһЩÊý¾Ý¿â¹ÜÀí²Ù×÷£¬ÈçFLUSH£¬RESETµÈ¡£Ëü»¹ÔÊÐíÄãÖ´ÐÐmysqladminÃüÁreload£¬refresh£¬flush-hosts£¬flush-logs£¬flush-privileges£¬flush-status£¬flush-tablesºÍflush-threads¡£

  • REPLICATION CLIENT£¬ÔÊÐí²éѯ¾µÏñ»úÖÆÖÐÖ÷·þÎñÆ÷ºÍ´Ó·þÎñÆ÷µÄλÖá£

  • REPLICATION SLAVE£¬ÔÊÐíij¸ö¿Í»§Á¬½Óµ½¾µÏñ»úÖÆÖеÄÖ÷·þÎñÆ÷²¢ÇëÇó·¢ËͶþ½øÖƱä¸üÈÕÖ¾¡£¸ÃȨÏÞÓ¦ÊÚÓè´Ó·þÎñÆ÷ÓÃÀ´Á¬½ÓÖ÷·þÎñÆ÷µÄÕʺš£ÔÚ4.0.2°æÕâǰ£¬´Ó·þÎñÆ÷ÊÇÓÃFILEȨÏÞÀ´Á¬½ÓµÄ¡£

  • SHOW DATABASES£¬¿ØÖÆÓû§Ö´ÐÐSHOW DATABASESÓï¾äµÄȨÏÞ¡£

  • SUPER£¬ÔÊÐíÖÕÖ¹Ị̈߳¬Ê¹ÓÃmysqladmin debugÃüÁʹÓÃCHANGE MASTER£¬PURGE MASTER LOGSÒÔ¼°ÐÞ¸ÄÈ«¾Ö¼¶±äÁ¿µÄSETÓï¾ä¡£SUPER»¹ÔÊÐíÄã¸ù¾Ý´æ·ÅÔÚDESÃÜÔ¿ÎļþÀïµÄÃÜÔ¿½øÐÐDES½âÃܵŤ×÷¡£

userȨÏÞ±íÖÐÓÐÒ»¸össl_typeÊý¾ÝÁУ¬ÓÃÀ´ËµÃ÷Á¬½ÓÊÇ·ñʹÓüÓÃÜÁ¬½ÓÒÔ¼°Ê¹ÓÃÄÄÖÖÀàÐ͵ÄÁ¬½Ó£¬ËüÊÇÒ»¸öENUMÀàÐ͵ÄÊý¾ÝÁУ¬¿ÉÄܵÄȡֵÓУº

  • NONE£¬Ä¬ÈÏÖµ£¬±íʾ²»Ðè¼ÓÃÜÁ¬½Ó¡£

  • ANY£¬±íʾÐèÒª¼ÓÃÜÁ¬½Ó£¬¿ÉÒÔÊÇÈκÎÒ»ÖÖ¼ÓÃÜÁ¬½Ó¡£ÓÉGRANTµÄREQUIRE SSL×Ó¾äÉèÖá£

  • X509£¬±íʾÐèÒª¼ÓÃÜÁ¬½Ó£¬²¢ÒªÇó¿Í»§Ìṩһ·ÝÓÐЧµÄX509Ö¤Êé¡£ÓÉGRANTµÄREQUIRE X509×Ó¾äÉèÖá£

  • SPECIFIED£¬±íʾ¼ÓÃÜÁ¬½ÓÐèÂú×ãÒ»¶¨ÒªÇó£¬ÓÉREQUIRE×Ó¾äµÄISSUER£¬SUBJECT»òCIPHERµÄÖµ½øÐÐÉèÖá£Ö»Òªssl_typeÁеÄֵΪSPECIFIED£¬ÔòMySQL»áÈ¥¼ì²éssl_cipher(¼ÓÃÜËã·¨)¡¢x509_issuer(Ö¤ÊéÇ©·¢Õß)ºÍx509_subject(Ö¤ÊéÖ÷Ìâ)ÁеÄÖµ¡£Õ⼸ÁеÄÁÐÀàÐÍÊÇBLOBÀàÐ͵ġ£

userȨÏÞ±íÀﻹÓм¸ÁÐÊÇÉèÖÃÕÊ»§×ÊԴʹÓÃÇé¿öµÄ£¬Èç¹ûÒÔÏÂÊý¾ÝÁÐÖеÄÊýȫΪÁ㣬Ôò±íʾûÓÐÏÞÖÆ£º

  • max_connections£¬Ã¿Ð¡Ê±¿ÉÁ¬½Ó·þÎñÆ÷µÄ´ÎÊý¡£

  • max_questions£¬Ã¿Ð¡Ê±¿É·¢³ö²éѯÃüÁîÊý¡£

  • max_updates£¬Ã¿Ð¡Ê±¿ÉÒÔ·¢³öµÄÊý¾ÝÐÞ¸ÄÀà²éѯÃüÁîÊý¡£

ÉèÖÃȨÏÞ±íӦעÒâµÄÊÂÏ

  • ɾ³ýËùÓÐÄäÃûÓû§¡£

  • ²é³öËùÓÐûÓпÚÁîÓû§£¬ÖØÐÂÉèÖÿÚÁî¡£¿ÉÓÃÒÔÏÂÃüÁî²éѯ¿Õ¿ÚÁîÓû§£º

    mysql> SELECT host,user FROM user WHERE password = '';
    
  • ¾¡Á¿²»ÒªÔÚhostÖÐʹÓÃͨÅä·û¡£

  • ×îºÃ²»ÒªÓÃuserȨÏÞ±í½øÐÐÊÚȨ£¬ÒòΪ¸Ã±íµÄȨÏÞ¶¼ÊÇÈ«¾Ö¼¶µÄ¡£

  • ²»Òª°ÑmysqlÊý¾Ý¿âµÄȨÏÞÊÚÓèËûÈË£¬ÒòΪ¸ÃÊý¾Ý¿â°üº¬È¨ÏÞ±í¡£

  • ʹÓÃGRANT OPTIONȨÏÞʱ²»ÒªÀÄÓá£

  • FILEȨÏÞ¿É·ÃÎÊÎļþϵͳÖеÄÎļþ£¬ËùÒÔÊÚȨʱҲҪעÒâ¡£Ò»¸ö¾ßÓÐFILEȨÏÞµÄÓû§Ö´ÐÐÒÔÏÂÓï¾ä¾Í¿É²é¿´·þÎñÆ÷ÉÏÈ«Ìå¿É¶ÁµÄÎļþ£º

    mysql> CREATE TABLE etc_passwd(pwd_entry TEXT);
    mysql> LOAD DATA INFILE '/etc/passwd' INTO TABLE etc_passwd;
    mysql> SELECT * FROM etc_passwd£»
    

    Èç¹ûMySQL·þÎñÆ÷Êý¾ÝĿ¼ÉϵķÃÎÊȨÏÞÉèÖõò»ºÃ£¬¾Í»áÁôÏÂÈþßÓÐFILEȨÏÞµÄÓû§½øÈë±ðÈËÊý¾Ý¿âµÄ°²È«Â©¶´¡£ËùÒÔ½¨Òé°ÑÊý¾ÝĿ¼ÉèÖóÉÖ»ÄÜÓÉMySQL·þÎñÆ÷¶ÁÈ¡¡£ÏÂÃæÑÝʾһ¸öÀûÓþßÓÐFILEȨÏÞµÄÓû§¶ÁÈ¡Êý¾ÝĿ¼ÖÐÎļþȨÏÞÉèÖò»ÑÏÃܵÄÊý¾Ý¿âÊý¾ÝµÄ¹ý³Ì£º

    mysql> use test;
    mysql> create table temp(b longblob);
    mysql> show databases                   #ÏÔʾÊý¾Ý¿âÃûÇåµ¥£¬--skip-show-database¿É½ûÖ¹¸Ã¹¦ÄÜ
    mysql> load data infile './db/xxx.frm' into table temp fields escaped by '' lines terminated by '';
    mysql> select * from temp into outfile 'xxx.frm' fields escaped by '' lines terminated by '';
    mysql> delete from temp;
    mysql> load data infile './db/xxx.MYD' into table temp fields escaped by '' lines terminated by '';
    mysql> select * from temp into outfile 'xxx.MYD' fields escaped by '' lines terminated by '';
    mysql> delete from temp;
    mysql> load data infile './db/xxx.MYI' into table temp fields escaped by '' lines terminated by '';
    mysql> select * from temp into outfile 'xxx.MYI' fields escaped by '' lines terminated by '';
    mysql> delete from temp;
    

    ÕâÑù£¬ÄãµÄÊý¾Ý¿â¾Í¸øÈË¿½±´µ½±¾µØÁË¡£Èç¹û·þÎñÆ÷ÊÇÔËÐÐÔÚrootÓû§Ï£¬ÄÇΣº¦¾Í¸ü´óÁË£¬ÒòΪroot¿ÉÔÚ·þÎñÆ÷ÉÏ×öÈκεIJÙ×÷¡£ËùÒÔ¾¡Á¿²»ÒªÓÃrootÓû§À´ÔËÐзþÎñÆ÷¡£

  • Ö»°ÑPROCESSȨÏÞÊÚÓè¿ÉÐÅÓû§£¬¸ÃÓû§¿É²éѯÆäËûÓû§µÄÏß³ÌÐÅÏ¢¡£

  • ²»Òª°ÑRELOADȨÏÞÊÚÓèÎÞ¹ØÓû§£¬ÒòΪ¸ÃȨÏÞ¿É·¢³öFLUSH»òRESETÓï¾ä£¬ÕâЩÊÇÊý¾Ý¿â¹ÜÀí¹¤¾ß£¬Èç¹ûÓû§²»µ±Ê¹ÓûáʹÊý¾Ý¿â¹ÜÀí³öÏÖÎÊÌâ¡£

  • ALTERȨÏÞÒ²²»ÒªÊÚÓèÒ»°ãÓû§£¬ÒòΪ¸ÃȨÏ޿ɸü¸ÄÊý¾Ý±í¡£

GRANTÓï¾ä¶ÔȨÏÞ±íµÄÐ޸Ĺý³Ì£º

  • µ±Äã·¢ËÍÒ»ÌõGRANTÓï¾äʱ£¬·þÎñÆ÷»áÔÚuserȨÏÞ±íÀï´´½¨Ò»¸ö¼Ç¼Ïî²¢°ÑÄãÓû§Ãû¡¢Ö÷»úÃûºÍ¿ÚÁî¼Ç¼ÔÚUser¡¢HostºÍPasswordÁÐÖС£Èç¹ûÉèÖÃÁËÈ«¾ÖȨÏÞ£¬ÓɰѸÃÉèÖüǼÔÚÏàÔÚµÄȨÏÞÁÐÖС£

  • Èç¹ûÔÚGRANTÀïÉèÖÃÁËÊý¾Ý¿â¼¶È¨ÏÞ£¬Äã¸ø³öµÄÓû§ÃûºÍÖ÷»úÃû¾Í»á¼Ç¼µ½dbȨÏÞ±íµÄUserºÍHostÁÐÖУ¬Êý¾Ý¿âÃû¼Ç¼ÔÚDbÁÐÖУ¬È¨Ï޼Ǽµ½Ïà¹ØµÄȨÏÞÁÐÖС£

  • ½Ó×ÅÊǵ½Êý¾Ý±íºÍÊý¾ÝÁм¶µÄȨÏÞÉèÖã¬ÉèÖ÷½·¨ºÍÉÏÃæµÄÒ»Ñù¡£·þÎñÆ÷»á°ÑÓû§Ãû¡¢Ö÷»úÃû¡¢Êý¾Ý¿âÃûÒÔ¼°ÏàÓ¦µÄÊý¾Ý±íÃûºÍÊý¾ÝÁÐÃû¼Ç¼µ½Êý¾Ý±íÖС£

ɾ³ýÓû§È¨ÏÞÆäʵ¾ÍÊǰÑÕâЩȨÏÞ±íÖÐÏàÓ¦µÄÕʺżÇ¼ȫ²¿É¾³ý¼´¿É¡£

5.3. ½¨Á¢¼ÓÃÜÁ¬½Ó

¼ÓÃÜÁ¬½Ó¿ÉÌá¸ßÊý¾ÝµÄ°²È«ÐÔ£¬µ«»á½µµÍÐÔÄÜ¡£Òª½øÐмÓÃÜÁ¬½Ó£¬±ØÐëÂú×ãÒÔÏÂÒªÇó£º

  • userȨÏÞ±íÀïÒªÓÐÏà¹ØµÄSSLÊý¾ÝÁС£Èç¹û°²×°µÄMySQL·þÎñÆ÷ÊÇ4.0.0°æµÄ£¬userȨÏÞ±íÒѰüº¬Ïà¹ØµÄSSLÊý¾ÝÁУ¬·ñÔò£¬ÎÒÃÇÒ²¿ÉÓÃmysql_fix_privilege_tables½Å±¾Éý¼¶È¨ÏÞ±í¡£

  • ·þÎñÆ÷ºÍ¿Í»§³ÌÐò¶¼ÒѾ­±àÒëÓÐOpenSSLÖ§³Ö¡£Ê×ÏÈÒª°²×°openssl£¬ÔÚ±àÒëʱMySQL·þÎñÆ÷ʱ¼Ó--with-vioºÍ--with-opensslÑ¡Ïî¼ÓÉÏopensslÖ§³Ö¡£¿ÉÓÃÒÔÏÂÓï¾ä²éѯ·þÎñÆ÷ÊÇ·ñÖ§³ÖSSL£º

    mysql> show variables like 'have_openssl';
    
  • ÔÚÆô¶¯·þÎñÆ÷ʱÓÃÓйØÑ¡ÏîÖ¸Ã÷Ö¤ÊéÎļþºÍÃÜÔ¿ÎļþµÄλÖá£ÔÚ½¨Á¢¼ÓÃÜÁ¬½Óǰ£¬Òª×¼±¸Èý¸öÎļþ£¬Ò»¸öCAÖ¤Ê飬ÊÇÓÉ¿ÉÐÅÀµµÚÈý·½³ö¾ßµÄÖ¤Ê飬ÓÃÀ´ÑéÖ¤¿Í»§¶ËºÍ·þÎñÆ÷¶ËÌṩµÄÖ¤Êé¡£CAÖ¤Êé¿ÉÏòÉÌÒµ»ú¹¹¹ºÂò£¬Ò²¿É×ÔÐÐÉú³É¡£µÚ¶þ¸öÎļþÊÇÖ¤ÊéÎļþ£¬ÓÃÓÚÔÚÁ¬½ÓʱÏò¶Ô·½Ö¤Ã÷×ÔÒÑÉí·ÝµÄÎļþ¡£µÚÈý¸öÎļþÊÇÃÜÔ¿Îļþ£¬ÓÃÀ´¶ÔÔÚ¼ÓÃÜÁ¬½ÓÉÏ´«ÊäÊý¾ÝµÄ¼ÓÃܺͽâÃÜ¡£MySQL·þÎñÆ÷¶ËµÄÖ¤ÊéÎļþºÍÃÜÔ¿Îļþ±ØÐëÊ×ÏȰ²×°£¬ÔÚsampdb·¢Ðа汾µÄsslĿ¼ÀïÓм¸¸ö¹©²Î¿¼µÄÑù±¾Îļþ£ºca-cert.pem(CAÖ¤Êé)£¬server-cert.pem(·þÎñÆ÷Ö¤Êé)£¬server-key.pem(·þÎñÆ÷¹«¹²ÃÜÔ¿)¡£°ÑÕ⼸¸öÎļþ¿½±´µ½·þÎñÆ÷µÄÊý¾ÝĿ¼ÖУ¬ÔÙÔÚÑ¡ÏîÎļþÀï¼ÓÉÏÒÔÏÂÄÚÈÝ£º

    [mysqld]
    ssl-ca=/usr/local/mysql/data/ca-cert.pem
    ssl-cert=/usr/local/mysql/data/server-cert.pem
    ssl-key=/usr/local/mysql/data/server-key.pem
    

    ÖØÆô·þÎñÆ÷£¬Ê¹ÅäÖÃÉúЧ¡£

  • ÒªÏëÈÃij¸ö¿Í»§³ÌÐò½¨Á¢¼ÓÃÜÁ¬½Ó£¬±ØÐëÔÚµ÷ÓÃÕâ¸ö¿Í»§³ÌÐòʱÓÃÓйØÑ¡Ïî¸æËßËüÔÚÄÄÀïÄÜÕÒµ½ÆäÖ¤ÊéÎļþºÍÃÜÔ¿Îļþ¡£ÔÚsampdb·¢ÐаæµÄsslĿ¼ÖÐÌṩÁËclient-cert.pem(¿Í»§Ö¤ÊéÎļþ)£¬client-key.pem(¿Í»§ÃÜÔ¿Îļþ)£¬CAÖ¤ÊéÓë·þÎñÆ÷ʹÓÃͬÑùµÄca-cert.pem¡£°ÑËûÃÇ¿½±´µ½¸öÈËĿ¼Ï£¬²¢ÔÚ.my.cnfÑ¡ÏîÎļþÖÐÖ¸³öÎļþλÖã¬È磺

    [mysql]
    ssl-ca=/home/mysql/ca-cert.pem
    ssl-cert=/home/mysql/client-cert.pem
    ssl-key=/home/mysql/client-key.pem
    

    ÅäÖÃÍê³Éºó£¬µ÷ÓÃmysql³ÌÐòÔËÐÐ\s»òSHOW STATUS LIKE 'SSL%'ÃüÁÈç¹û¿´µ½SSL:µÄÐÅÏ¢ÐоÍ˵Ã÷ÊǼÓÃÜÁ¬½ÓÁË¡£Èç¹û°ÑSSLÏà¹ØµÄÅäÖÃд½øÑ¡ÏîÎļþ£¬ÔòĬÈÏÊǼÓÃÜÁ¬½ÓµÄ¡£Ò²¿ÉÓÃmysql³ÌÐòµÄ--skip-sslÑ¡ÏîÈ¡Ïû¼ÓÃÜÁ¬½Ó¡£Èç¹ûÓÃÃüÁîÐз½Ê½ÆôÓüÓÃÜÁ¬½Ó¿ÉÒÔÕâÑùд£º

    % mysql --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
    

¿ÉÓÃGRANTÓï¾äµÄREQUIRE SSLÑ¡ÏîÀ´Ç¿ÖÆÓû§Ê¹ÓüÓÃÜÁ¬½Ó¡£

ʹÓÃsampdb·¢ÐаæµÄÖ¤Êé¿ÉÒÔ½¨Á¢Ò»¸ö¼ÓÃÜÁ¬½Ó£¬µ«ÓÉÓÚ¸ÃÎļþÒѹ«¿ª£¬ËùÒÔ°²È«ÐÔ²»ºÃ£¬ÎÒÃÇ¿ÉÒÔÔÚ²âÊԳɹ¦ºó×ÔÐн¨Á¢Ö¤Êé»ò¹ºÂòÉÌÒµÖ¤Ê飬ÒÔÌá¸ß°²È«ÐÔ¡£ÈçºÎ×ÔÐн¨Á¢SSLÖ¤ÊéµÄÎĵµÔÚsampdb·¢ÐаæµÄssl/READMEÎļþÀïÓÐ˵Ã÷¡£

Chapter 6. Êý¾Ý¿âµÄ±¸·Ý¡¢Î¬»¤ºÍÐÞ¸´

Table of Contents

6.1. ¼ì²é/Ð