��������  ����Linux

mysql-logo.png (3082 bytes)MySQL���IJο��ֲ�

���ߣ����� ([email protected]��      ��ҳ��http://aosp.me


��һ��, ǰһ��, ��һ��, ���һ����Ŀ¼.


9 MySQL����������

9.1 MySQL֧����Щ���ԣ�

mysqld�������������Է���������Ϣ���ݿ�������Ӣ��(ȱʡ)����ɳ�������������������������Ų���

����mysqldʹ��һ���ض������ԣ�ʹ��һ��--language=lang��-L langѡ����磺

shell> mysqld --language=swedish

��

shell> mysqld --language=/usr/local/share/swedish

ע�⣬�������Ե�������Сд��ĸָ����

�����ļ�λ��(ȱʡ��)'mysql_base_dir/share/LANGUAGE/'��

Ϊ�˸��´�����Ϣ�ļ�����Ӧ�ñ༭��errmsg.txt���ļ�����ִ����������������errmsg.sys���ļ���

shell> comp_err errmsg.txt errmsg.sys

�����������һ�����µ�MySQL�汾���ǵ�Ҫ�ٴ������ġ�errmsg.txt���ļ����и��¡�

9.1.1 �������ݺ�������ַ���

ȱʡ�أ�MySQLʹ�� ISO-8859-1 ( Latin1 ) �ַ�������������������ŷʹ�õ��ַ�����

�ַ���������������������ʲô�ַ��������SELECT����ORDER BY��GROUP BY�Ӿ�����

ͨ����configure��--with-charset=charsetѡ�������ڱ���ʱ�ı��ַ�������4.7.1 ���ٰ�װ������

Ϊ�˰������ַ�������MySQL��ʹ�����й��̣�

9.1.2 ����һ���µ��ַ���

  1. Ϊ�ַ���ѡ��һ�����֣�������MYSET��ʾ��
  2. ��MySQLԴ����ַ��д����ļ���strings/ctype-MYSET.c����
  3. �о�һ�����е���ctype-*.c'�ļ�������Ҫ����ʲô��ע�⣬���ļ��е����������������ctype_MYSET��to_lower_MYSET�ȵȵ����֡�to_lower[]��to_upper[]�Ǽ򵥵����飬�����ַ���ÿ����Ա��Ӧ��Сд�ʹ�д�ַ������磺
    to_lower['A'] should contain 'a'
    to_upper['a'] should contain 'A'

    sort_order[]��һ��ӳ�䣬ָ���ַ�Ϊ�˱ȽϺ�����Ŀ��Ӧ����ζ��򡣶��������ַ���������to_upper[]һ������ζ�����򽫺��Դ�Сд)��MySQL������sort_order[character]ֵ�����ַ���ctype[]��һ��λֵ�����飬һ��Ԫ�ض�Ӧһ���ַ�����ע�⣬to_lower[]��to_upper[]��sort_order[]���ַ����±꣬����ctype[]���ַ�ֵ+1���±ꡣ����һ�����Ų��Ա��ܴ���EOF) ��������m_ctype.h���ҵ�����bitmask���壺

    #define _U      01      /* Upper case */
    #define _L      02      /* Lower case */
    #define _N      04      /* Numeral (digit) */
    #define _S      010     /* Spacing character */
    #define _P      020     /* Punctuation */
    #define _C      040     /* Control character */
    #define _B      0100    /* Blank */
    #define _X      0200    /* heXadecimal digit */
    

    ÿ���ַ���ctype[]�����Ӧ���������ַ������õ�λģ(bitmask)ֵ�����ϣ�union�������磬'A'��һ����д�ַ�(_U) ��ͬʱ��ʮ������λ(_X)������ctype['A'+1]Ӧ�ð���ֵ��

    _U + _X = 01 + 0200 = 0201
    
  4. Ϊ����ַ�������һ��Ψһ�ı�ŵ���include/m_ctype.h.in����
  5. ���ַ������ּӵ���configure.in�е�CHARSETS_AVAILABLE����
  6. �������ã����±��벢�Ҳ��ԡ�

9.1.3 ���ֽ��ַ�֧��

��������ڴ���һ�����ֽ��ַ����������ʹ��_MB�ꡣ����include/m_ctype.h.in�������ӣ�

#define MY_CHARSET_MYSET  X
#if MY_CHARSET_CURRENT == MY_CHARSET_MYSET
#define USE_MB
#define USE_MB_IDENT
#define ismbchar(p, end)  (...)
#define ismbhead(c)       (...)
#define mbcharlen(c)      (...)
#define MBMAXLEN          N
#endif

���

MY_CHARSET_MYSET һ��Ψһ���ַ���ֵ��
USE_MB ����ַ����ж��ֽ��ַ�����ismbhead()��mbcharlen()��������
USE_MB_IDENT ����ѡ ) ������壬����ʹ�ö��ֽ��ַ��ı���������
ismbchar(p, e) ���p����һ�����ֽ��ַ��ַ���������0������������ǣ������ַ��Ĵ�С(�ֽ���)��p��eָ���ַ����Ŀ�ʼ�ͽ���������Ǵ�(char*)p��(char*)e-1��
ismbhead(c) ���c��һ�����ֽ��ַ��ַ����ĵ�һ���ַ��������档
mbcharlen(c) ���c��һ�����ֽ��ַ����ĵ�һ���ַ������ظ��ַ����Ĵ�С��
MBMAXLEN ���ַ���������ַ����ֽڴ�С��

9.2 ������־

����--log-update=file_nameѡ������ʱ��mysqld�����и������ݵ�SQL����д���¼�ļ��С��ļ���д������Ŀ¼������һ������file_name.#������#��һ�����֣�����ÿ��ִ��mysqladmin refresh��mysqladmin flush-logs��FLUSH LOGS��䡢������������ʱ��1��

�����ʹ��--log��-lѡ�mysqld��һ���ļ�����hostname.log��дһ��ͨ�õļ�¼�ļ������������͸��²�������һ���µļ�¼�ļ�����(���������رղ����ٴ�)��ȱʡ�أ�mysql.server�ű���-lѡ������MySQL��������������������������п�ʼʹ��MySQLʱ������Ҫ��һЩ�����ܣ�����Դ�mysql.server��ɾ��-lѡ�

���¼�¼�ܴ�������Ϊ���������������������ݵ���䡣���һ����WHERE��UPDATE��DELETE�Ҳ����У����Ͳ���д���¼�ļ�������������������һ����Ϊ���Ѿ��е�ֵ��UPDATE��䡣

�������Ҫ�Ӹ��¼�¼�ļ�����һ�����ݿ⣬�������������(������ĸ��¼�¼����file_name.#����ʽ������)��

shell> ls -1 -t -r file_name.[0-9]* | xargs cat | mysql

ls����������ȷ�Ĵ���õ����еļ�¼�ļ���

����������һ��������ָ��������ļ���������Ҫ���������ڱ��ݺͱ���֮��ĸ��£�����Ժ����á�

������������������һ���������ݿⲢ������Ҫ���Ʊ���������ݿ���еĸı�ʱ����Ҳ����ʹ�ø��¼�¼��

9.3 MySQL���ݿ�������ж��?

MySQL 3.22 �ڱ���С����һ��4G�����ơ�ʹ����MySQL 3.23�е���MyISAM ���ı���С�ɴ�8���� TB(2^63���ֽ�)��

Ȼ��ע�⣬����ϵͳ���������ļ���С�����ơ���Linux�ϣ���ǰ��������2G����Solaris 2.5.1�ϣ�������4G����Solaris 2.6�ϣ�������1000G������ζ��MySQL���Ĵ�Сͨ���ɲ���ϵͳ���ơ�

ȱʡ�أ�MySQL�����ߴ��Լ4G�������SHOW TABLE STATUS�����myisamchk -dv table_name���һ������������С����7.21 SHOW�䷨(�õ������еȵ���Ϣ����

�������Ҫ���� 4G �ı�(������IJ���ϵͳ֧����)����Ӧ�����㴴����ʱ�趨AVG_ROW_LENGTH��MAX_ROWS��������7.7 CREATE TABLE�﷨����Ҳ����ALTER TABLE���Ժ�������Щ����7.8 ALTER TABLE�﷨��

�����Ĵ��Ҫ���ֻ���������ʹ��myisampack�ϲ����Ұ������ѹ����һ����myisampackͨ��ѹ��һ����������50%�����������У�ʵ���ϣ�����ı�����12.5 MySQLѹ����ֻ���ı���������

��һ���Ľ�������������ں�����MERGE�⣬�������㽫һ��������ͬ�ı��ļ�����Ϊһ�������������������������ͬ��ζ�����еı�����ͬ������Ϣ����)ĿǰMERGEֻ������ɨ��һ�������ϣ���Ϊ����֧�������������ڲ��õĽ������������ӽ�ȥ��

9.4 MySQL���ݿ������

��MySQL��Ŀǰ(�汾 3.23.6)����������ֻ������ݿ����ʽ��ѡ�񡣵��㴴��һ�ű�ʱ������Ը���MySQL��Ӧ�ö��ڱ�ʹ���ĸ������͡�MySQL�����Ǵ���һ��.frm�ļ���������ж��塣�ӱ����Ͷ��������������ݽ��������ļ��д洢��

������ALTER TABLE����ڲ�ͬ���͵ı�֮��任����7.8 ALTER TABLE�﷨��

MyISAM
��MySQL 3.23�У�MyISAM��ȱʡ�������ͣ����ǻ���ISAM���벢���кܶ����õ���չ�������洢��һ����.MYI��MYindex)��չ�����ļ��������ݴ洢����.MYD��MYData)��չ�����ļ��С�������myisamchkʵ�ó�����/�޸�MyISAM������13.4 �Ա����ָ�ʹ��myisamchk�����м�����MyISAM����ȫ�µģ�
  • ����ɾ���У������ڱ���INSERTһ�����У��������̴߳ӱ������ڶ�ȡ��ͬʱ��
  • ��֧�ִ��ļ����ļ�ϵͳ/����ϵͳ��֧�ִ��ļ�(63λ)��
  • ���е��������ȴ洢���ֽڣ���ʹ���ݶ����ڻ�����OS��Ψһ��Ҫ���ǻ���ʹ�ò�2�з�������(�������20��ʱ���ڵ�ÿ̨����)��IEEE�����ʽ(Ҳ��������������ȫ������λ)������֧�ֶ����Ƽ����ԵĻ�����Ψһ������Ƕ��ʽϵͳ(��Ϊ������ʱ�йŹֵĴ�����)��
  • ���е����ּ��ȴ洢���ֽ��Ի�ø��ߵ�����ѹ����
  • AUTO_INCREMENT�е��ڲ�������MyISAM���Զ�����INSERT/UPDATEʱ�������� AUTO_INCREMENTֵ������myisamchk�������ã��⽫ʹ��AUTO_INCREMENT�и����ٲ���ԭ�������������ϵ�ISAM����������ʹ�á�ע�⣬��һ��AUTO_INCREMENT������һ���ಿ��ֵ(multi-part-key)�Ľ�βʱ����ʽ����Ϊ��Ȼ�Ǵ��ڡ�
  • BLOB��TEXT�п��Ա�������
  • ��������������NULLֵ��ÿ����ռ0-1���ֽڡ�
  • �������ļ�����ȱʡ��500���ֽڡ��ڼ�����250���ֽڵ�����£�һ������ȱʡ��1024���ֽڵĹؼ��ֿ��С�����ڴ˼���
  • ÿ�����ļ��������Ŀ�Ŵ�32��Ϊȱʡ���ⲻ�����±���myisamchk�Ϳ��ԷŴ�64��
  • ����һ����־MyISAM��ʾ�����Ƿ���ȷ�����ϵ��ļ����⽫���ñ������Զ���������MySQL��������
  • ����myisamchk����DZ�Ϊ�����ġ���myisamchk --fast�����������Щû�������ǵı���
  • myisamchk -a�洢��ֵ��ɲ��ֵ�ͳ��(��ֻ����ISAM��������)��
  • ������ɾ������ºͲ������ʱ����̬�ߴ���н��и�����Ƭ����ͨ���Զ��ϲ����ڵ�ɾ���鲢�������һ�鱻ɾ����ͨ���������������
  • myisampack�ܽ���BLOB��VARCHAR�С�

MyISAMҲ֧�����ж�����MySQL�ڲ��õĽ�������ʹ�á�

  • ֧��һ��������VARCHAR���ͣ�һ��VARCHAR����2���ֽڴ洢�ij��ȿ�ʼ��
  • ��VARCHAR�ı�����ʽ�̶���̬�ļ�¼���ȡ�
  • VARCHAR��CHAR�������64K�ֽڡ����еĹؼ���Ƭ���������������Զ��壬�⽫ʹ��MySQLÿ���в�ͬ�����Զ��塣
  • һ���Ӵռ��������������UNIQUE���⽫��������һ�����е��κ����������UNIQUE���ԡ���Ȼ�����㲻������һ��UNIQUE�������������

��Ҳ����ʹ�÷�����ISAM�������͡��⽫�ڲ�����ʧ����ΪMyISAM��ͬһ�������ĸ���ʵ�֡�ISAMʹ��һ��B-tree��������������洢��һ����.ISM��չ�����ļ��в������ݴ洢����.ISD��չ�����ļ��У������isamchkʵ�ó�����/�޸�ISAM������13.4 ʹ��myisamchk�ָ�������ISAM�����ǿ�OS/ƽ̨�����ƿ���ֲ�ġ�ISAM����������/���ԣ�

  • ѹ�����Ҷ�����
  • �̶��Ͷ�̬��¼����
  • ��16������ÿ������16����ɲ���
  • ��������256(ȱʡ��
  • �����Ի�����ʽ�洢�����ٵ��������ڻ���/OS ��
HEAP 
HEAP����ʹ��һ���Ӵգ�hashed���������Ҵ洢���ڴ��С���ʹ���Ǹ��죬�������MySQL�������㽫ʧȥ���д洢�����ݡ�HEAP��Ϊ��ʱ���ܿ��ã�
CREATE TABLE test TYPE=HEAP SELECT ip,SUM(downloads) as down
        FROM log_table GROUP BY ip;
SELECT COUNT(ip),AVG(down) FROM test;
DROP TABLE test;

����ʹ��HEAP��ʱ����������Ӧ�ÿ��ǵ�һЩ���飺

  • ��Ӧ��������CREATE�����ָ��MAX_ROWS�Ա�֤�����ⲻʹ�����е��ڴ档
  • ������ֻ������=��<=>һ��ʹ�ã����Ǻܿ�)��
  • HEAP��ʹ��һ���̶��ļ�¼���ȸ�ʽ��
  • HEAP��֧��BLOB/TEXT�С�
  • HEAP��֧��AUTO_INCREMENT�С�
  • HEAP��֧����һ��NULL���ϵ�������
  • �������һ��HEAP�����з�Ψһ��(�Ӵձ�һ�㲻����)��
  • HEAP���������еĿͻ�֮�䱻����(�����κ������ı�)��
  • HEAP����������С����䡣����100%��̬��(�ڲ���ʱ)������������Ͷ���ļ��ռ䡣ɾ�����з���һ�����ӱ����ҵ���������ݲ��뵽��ʱ���������ٴ�ʹ�á�
  • Ϊ���ͷ��ڴ棬��Ӧ��ִ��DELETE FROM heap_table��DROP TABLE heap_table��
  • Ϊ�˱�֤�㲻��żȻ��Щ�޴������飬�㲻�ܴ�����max_heap_table_size���HEAP����

����һ��, ǰһ��, ��һ��, ���һ����Ŀ¼.

��������  ����Linux