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


��һ��, ǰһ��, ��һ��, ����һ��


10 ��MySQL�õ�����������

�Ż���һ��ӵ���������Ϊ��������Ҫ������ϵͳ�����⡣��������ϵͳ/Ӧ�õ�С֪ʶ��һЩ�ֲ��Ż��ǿ��ܵ�ʱ������Խ��������ϵͳ���Ż���������֪����ҲԽ�ࡣ

���ˣ����½���ͼ���Ͳ������Ż�MySQL�IJ�ͬ������һЩ���ӡ����Ǽ�ס������ijЩ(�𽥱���)��ϵͳ�����ķ�������ȥ����

10.1 �Ż�����

Ϊ��ʹһ��ϵͳ����������Ҫ���ֵ�Ȼ�ǻ������ơ���Ҳ��Ҫ֪������ϵͳ�������������飬�Ǿ�������ƿ����

�����ƿ���ǣ�

10.2 ϵͳ/����ʱ�����������ĵ���

������ϵͳ���Ķ�����ʼ����Ϊ��Щ���ߵ�ijһЩ�����������ˡ������������£����������ⲿ�ֿ��ܾ͹��ˣ���Ϊ���Դ��ջ񲢲���Ҫ��������һ�������������������ջ��ж����ĸо����Ǻõġ�

ʹ�õ�ȱʡOSȷʵ��Ҫ��Ϊ�������̶ȵ�ʹ�ö�CPU��Ӧ��ʹ��Solaris(��Ϊ�̹߳�����ȷʵ����)��Linux(��Ϊ2.2���ĺ�����ȷʵ������SMP֧��)��������32λ�Ļ����ϣ�Linuxȱʡ��2G���ļ���С���ơ����µ��ļ�ϵͳ���ͳ�ʱ( XFS )��ϣ���ⲻ�ñ�������

��Ϊ����û�ںܶ�ƽ̨����������MySQL�������Ҹ����ڿ���ѡ����ǰ���������������е�ƽ̨��

�������飺

10.2.1 ��������������Ӱ��MySQL���ٶ�

���������в�����Linux�ϲ���MySQL��׼���еģ���������Ӧ�ö���������ϵͳ�͹������ظ���һЩָʾ��

������-static����ʱ�����õ������Ŀ�ִ���ļ���ʹ��Unix�׽��ֶ���TCP/IP����һ�����ݿ�Ҳ�ɸ�����һЩ�����ܡ�

��Linux�ϣ�����pgcc��-O6����ʱ���㽫�õ������Ĵ��롣Ϊ������Щѡ��������sql_yacc.cc��������Ҫ��Լ200M�ڴ棬��Ϊgcc/pgcc��Ҫ�ܶ��ڴ�ʹ���к���Ƕ�루inline����������MySQLʱ����ҲӦ���趨CXX=gcc�Ա�������libstdc++��(������Ҫ)��

ֻͨ��ʹ��һ���Ϻõı��������Ϻõı�����ѡ���Ӧ�������ܵõ�һ��10-30%�ļ��١��������Լ�����SQL�����������ر���Ҫ��

��Intel�ϣ���Ӧ������ʹ��pgcc��Cygnus CodeFusion�������õ������ٶȡ������Ѿ��������µ� Fujitsu���������������ǻ�û�㹻���������Ż�����MySQL��

����������������һЩ��������

��TcX�ṩ��MySQL-Linux�ķַ���pgcc���벢��̬���ӡ�

10.2.2 ��������

10.2.2.1 Ϊ���ݿ��ͱ�ʹ�÷�������

�����Դ����ݿ�Ŀ¼�ƶ��������ݿ⵽�𴦣����������ӵ��µص��ķ��Ŵ������ǡ���������Ҫ�����������磬ת��һ�����ݿ⵽�и������пռ���һ���ļ�ϵͳ��

����MySQLע�⵽һ������һ���������ӣ����������������Ӳ���ʹ����ʵ��ָ���ı������ɹ�����֧��realpath()���õ�����ϵͳ��(����Linux��Solaris֧��realpath())���ڲ�֧��realpath()��ϵͳ�ϣ���Ӧ�ò�ͬʱͨ����ʵ·���ͷ������ӷ��ʱ����������������������κθ��º󽫲�һ�¡�

MySQLȱʡ��֧�����ݿ����ӡ�ֻҪ�㲻�����ݿ�֮����һ���������ӣ�һ�н������������ٶ�����MySQL����Ŀ¼����һ�����ݿ�db1����������һ����������db2ָ��db1��

shell> cd /path/to/datadir
shell> ln -s db1 db2

���ڣ�����db1�е���һ��tbl_a����db2��Ҳ������һ����tbl_a������һ���̸߳���db1.tbl_a������һ���̸߳���db2.tbl_a���������⡣

������ȷʵ��Ҫ�������������ı���������mysys/mf_format.c���еĴ��룺

if (!lstat(to,&stat_buff))  /* Check if it's a symbolic link */
    if (S_ISLNK(stat_buff.st_mode) && realpath(to,buff))

�Ѵ����ı�Ϊ������

if (realpath(to,buff))
 

10.2.3 ���ڷ���������

���������������õ�mysqld������ȱʡ��������С��

shell> mysqld --help

������������һ������mysqldѡ���Ϳ����ñ����ı�����������ȱʡֵ���ҿ���ȥ������һЩ������

Possible variables for option --set-variable (-O) are:
back_log              current value: 5
connect_timeout       current value: 5
delayed_insert_timeout  current value: 300
delayed_insert_limit  current value: 100
delayed_queue_size    current value: 1000
flush_time            current value: 0
interactive_timeout   current value: 28800
join_buffer_size      current value: 131072
key_buffer_size       current value: 1048540
lower_case_table_names  current value: 0
long_query_time       current value: 10
max_allowed_packet    current value: 1048576
max_connections       current value: 100
max_connect_errors    current value: 10
max_delayed_threads   current value: 20
max_heap_table_size   current value: 16777216
max_join_size         current value: 4294967295
max_sort_length       current value: 1024
max_tmp_tables        current value: 32
max_write_lock_count  current value: 4294967295
net_buffer_length     current value: 16384
query_buffer_size     current value: 0
record_buffer         current value: 131072
sort_buffer           current value: 2097116
table_cache           current value: 64
thread_concurrency    current value: 10
tmp_table_size        current value: 1048576
thread_stack          current value: 131072
wait_timeout          current value: 28800

������һ��mysqld�������������У�ͨ��ִ��������������Կ�����ʵ����ʹ�õı�����ֵ��

shell> mysqladmin variables

ÿ��ѡ�����������������ڻ�������С�����Ⱥ�ջ��С��ֵ���ֽڸ������������ڸ���׺��K������M�� ָ����K�ֽڻ����ֽ���ʾֵ�����磬16Mָ��16���ֽڡ���׺��ĸ�Ĵ�Сдû�й�ϵ��16M��16m����ͬ�ġ�

��Ҳ����������SHOW STATUS��һ�����еķ���������һЩͳ�ơ���7.21 SHOW�﷨(�õ������е���Ϣ)��

back_log
Ҫ��MySQL���е���������������ҪMySQL�߳���һ���ܶ�ʱ���ڵõ��dz������������������������ã�Ȼ�����̻߳�Щʱ��(���ܺܶ�)�������Ӳ�������һ�����̡߳�back_logֵָ����MySQL��ʱֹͣ�ش�������֮ǰ�Ķ�ʱ���ڶ��ٸ��������Ա����ڶ�ջ�С�ֻ������������һ����ʱ�����кܶ����ӣ�����Ҫ�����������仰˵����ֵ�Ե�����TCP/IP���ӵ��������еĴ�С�����IJ���ϵͳ���������д�С�������Լ������ơ� Unix listen(2)ϵͳ���õ��ֲ�ҳӦ���и�����ϸ�ڡ���������OS�ĵ��ҳ���������������ֵ����ͼ�趨back_log�������IJ���ϵͳ�����ƽ�����Ч�ġ�
connect_timeout
mysqld����������Bad handshake�����������֣�Ӧ��ǰ���ڵȴ�һ�����ӱ��ĵ�������
delayed_insert_timeout
һ��INSERT DELAYED�߳�Ӧ������ֹ֮ǰ�ȴ�INSERT������ʱ�䡣
delayed_insert_limit
�ڲ���delayed_insert_limit�к���INSERT DELAYED�������������Ƿ����κ�SELECT����δִ�С������������ڼ���ǰִ��������Щ���䡣
delayed_queue_size
Ӧ��Ϊ����INSERT DELAYED��������һ������(������)�������Ŷ����ˣ��κν���INSERT DELAYED�Ŀͻ����ȴ�ֱ���������пռ��ˡ�
flush_time
�����ⱻ����Ϊ����ֵ����ôÿflush_time�����б������ر�(���ͷ���Դ��sync������)��
interactive_timeout
�������ڹ�����ǰ��һ�����������ϵȴ��ж���������һ�������Ŀͻ�������Ϊ��mysql_real_connect()ʹ��CLIENT_INTERACTIVEѡ���Ŀͻ���Ҳ�ɼ�wait_timeout��
join_buffer_size
����ȫ������(join)�Ļ�������С(����������������)����������2��������ÿ��ȫ����������һ�λ�����������������������ʱ�����Ӹ�ֵ�ɵõ�һ��������ȫ�����ᡣ��ͨ���õ��������������ѷ�����������������
key_buffer_size
�������ǻ����IJ��ұ����е��̹߳�����key_buffer_size�������������Ļ�������С���������ɵõ����ô���������(�����ж��Ͷ���д)�������ܸ������������ࡣ������ʹ��̫����ϵͳ����ʼ��ҳ�������ı����ˡ���ס��ȻMySQL��������ȡ�����ݣ��㽫����ΪOS�ļ�ϵͳ��������һЩ�ռ䡣Ϊ����д��������ʱ�õ��������ٶȣ�ʹ��LOCK TABLES����7.24LOCK TABLES/UNLOCK TABLES�﷨��
long_query_time
����һ����ѯ����ʱ�䳬����(������)��Slow_queries�������������ӡ�
max_allowed_packet
һ�����������ߴ硣��Ϣ����������ʼ��Ϊnet_buffer_length�ֽڣ����ǿ�����Ҫʱ���ӵ�max_allowed_packet���ֽڡ�ȱʡ�أ���ֵ̫С���ܲ�׽����(���ܴ���)��������������ʹ�ô���BLOB�У����������Ӹ�ֵ����Ӧ��������Ҫʹ�õ�����BLOB����ô����
max_connections
������ͬʱ�ͻ������������Ӹ�ֵ����mysqldҪ�����ļ������������������������ļ����������Ƶ�ע�͡���18.2.4 Too many connections������
max_connect_errors
�����ж��ڸ������Ĵ�һ̨�����жϵ����ӣ���̨������ֹ��һ�������ӡ�������FLUSH HOSTS������ͨһ̨������
max_delayed_threads
��Ҫ�������ڵ��������ֵ��߳�������INSERT DELAYED���䡣��������ͼ������INSERT DELAYED�߳����ú���һ���±��������ݣ��н������룬����DELAYED����û��ָ��������
max_join_size
���ܽ�Ҫ��������max_join_size����¼�����Ὣ����һ�����������������û���Ҫִ��û��һ��WHERE�Ӿ䡢���ܳ�ʱ�䲢�ҷ��ذ����е����ᣬ��������
max_sort_length
������BLOB��TEXTֵʱʹ�õ��ֽ���(ÿ��ֵ��ͷmax_sort_length���ֽڱ�ʹ�ã������ı�����)��
max_tmp_tables
����ѡ��Ŀǰ�������κ�����)��һ���ͻ���ͬʱ���ִ򿪵���ʱ��������������
net_buffer_length
ͨ�Ż������ڲ�ѯ֮�䱻���õ��ô�С��ͨ���ⲻӦ�ñ��ı䣬�����������к��ٵ��ڴ棬���ܽ�������Ϊ��ѯ�����Ĵ�С���������ͻ�������SQL���������ij��ȡ��������䳬���������ȣ��������Զ��ر�������ֱ��max_allowed_packet���ֽڡ���
record_buffer
ÿ������һ��˳��ɨ�����߳�Ϊ��ɨ����ÿ�ű�����������С��һ�������������������ܶ�˳��ɨ�裬��������Ҫ���Ӹ�ֵ��
sort_buffer
ÿ����Ҫ�����������̷߳����ô�С��һ����������������ֵ����ORDER BY��GROUP BY��������18.5 MySQL���Ķ��洢��ʱ�ļ���
table_cache
Ϊ�����̴߳򿪱������������Ӹ�ֵ������mysqldҪ�����ļ���������������MySQL��ÿ��Ψһ�򿪵ı���Ҫ2���ļ������������������ļ����������Ƶ�ע�͡����ڱ��������ι�������Ϣ����10.2.4 MySQL�����򿪺͹رձ���
tmp_table_size
����һ����ʱ�������ô�С��MySQL����һ��The table tbl_name is full��ʽ�Ĵ��������������ܶ��߼�GROUP BY��ѯ������tmp_table_sizeֵ��
thread_stack
ÿ���̵߳�ջ��С����crash-me���Լ��⵽���������������ڸ�ֵ��ȱʡ��һ���IJ������㹻���ˡ���10.8 ʹ�����Լ��Ļ�׼��
wait_timeout
�������ڹر���֮ǰ��һ�������ϵȴ��ж���������Ҳ�ɼ�interactive_timeout��

MySQLʹ���Ǻܾ������Ե��㷨��������ͨ�����ú��ٵ��ڴ����л���MySQL�����ı����Եõ����õ����ܡ�

�������кܶ��ڴ��ͺܶ���������һ���е������Ŀͻ�����Ҫ���������ܣ���Ӧ��һЩ�������Ķ�����

shell> safe_mysqld -O key_buffer=16M -O table_cache=128 \
           -O sort_buffer=4M -O record_buffer=1M &

�������н��ٵ��ڴ��ʹ��������ӣ�ʹ������һЩ������ 
shell> safe_mysqld -O key_buffer=512k -O sort_buffer=100k \
           -O record_buffer=100k &
�������� 
shell> safe_mysqld -O key_buffer=512k -O sort_buffer=16k \
           -O table_cache=32 -O record_buffer=8k -O net_buffer=1K &

�����кܶ����ӣ����������⡱���ܷ���������mysqld�Ѿ�������ÿ������ʹ�ú��ٵ��ڴ档��Ȼ�������������������㹻���ڴ棬mysqldִ�еø��á�

ע�⣬�������ı�mysqld��һ��ѡ���ʵ����ֻ�Է��������Ǹ����ӱ��֡�

Ϊ������һ�������仯��Ч������������

shell> mysqld -O key_buffer=32m --help

��֤--helpѡ��������һ����������������������֮���г����κ�ѡ����Ч�������ڷ�ӳ�������С�

10.2.4 MySQL�����򿪺͹ر����ݿ���

table_cache, max_connections��max_tmp_tablesӰ�����������ִ򿪵��ļ�������������������������Щֵ��һ�����������������������IJ���ϵͳÿ�����̴����ļ���������������ǿ�ӵ����ơ�Ȼ������������������ϵͳ�����Ӹ����ơ���������OS�ĵ��ҳ���������Щ����Ϊ�ı����Ƶķ�����ϵͳ�кܴ��IJ�ͬ��

table_cache��max_connections�йء����磬����200���򿪵����ӣ���Ӧ����һ�ű��Ļ���������200 * n������n��һ������(join)�б�������������

�򿪱��Ļ����������ӵ�һ��table_cache������ֵ��ȱʡΪ64����������mysqld��-O table_cache=#ѡ�����ı䣩��һ�������Բ����رգ����ǵ��������˲�������һ���߳���ͼ����һ����ʱ��������ʹ��mysqladmin refresh��mysqladmin flush-tables��

����������ʱ��������ʹ�����й����ҵ�һ������������ʹ�ã�

��ÿ��������ȡ����һ����������ζ�ţ���������2���̴߳�ȡͬһ��������ͬһ����ѯ�д�ȡ������(��AS)������Ҫ���������Ρ��κα��ĵ�һ�δ���ռ2���ļ�������������ÿһ�ζ���ʹ�ý�ռһ���ļ������������ڵ�һ�δ򿪵Ķ������������������ļ��������������������߳�֮�乲����

10.2.5 ��ͬһ�����ݿ��д����������ݿ�����ȱ��

��������һ��Ŀ¼���������ļ����򿪡��رպʹ�����������������������ִ�������಻ͬ���ϵ�SELECT���䣬����������ʱ������һ�㿪������Ϊ��ÿ�������򿪵ı�������һ�����뱻�رա�������ͨ��ʹ����������Щ����������������

10.2.6 Ϊʲô����ô���򿪵ı���

��������mysqladmin statusʱ���㽫������������һЩ������

Uptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12

����������6�����������������������

MySQL�Ƕ��̵߳ģ�����������ͬʱ��ͬһ������������ѯ�ʡ�Ϊ����2���߳���ͬһ���ļ����в�ͬ״̬������������С������ÿ���������̶����ش򿪡���Ϊ�����ļ�����һЩ�ڴ���һ���������ļ��������������ļ��������������߳�֮�乲����

10.2.7 MySQL����ʹ���ڴ�

�±�ָ��mysqld������ʹ�ô洢����һЩ��ʽ����Ӧ�õĵط����������洢��ʹ�����صķ��������������֡�

ps������ϵͳ״̬�������Ա���mysqldʹ�úܶ��ڴ档���������ڲ�ͬ���ڴ���ַ�ϵ��߳�ջ���ɵġ����磬Solaris�汾��ps��ջ��δ�õ��ڴ��������õ��ڴ档������ͨ����swap -s�������ý���������֤������������ҵ�ڴ�©��̽����������mysqld������Ӧ����û���ڴ�©����

10.2.8 MySQL�����������ݿ���

MySQL���������������������ġ���ͨ��������һ����ѯǰ�����������б�Ҫ����������������ͬ����˳����������������

��WRITE��MySQLʹ�õ���������ԭ�����£�

��READ��MySQLʹ�õ���������ԭ�����£�

��һ���������ͷ�ʱ�������ɱ�д���������е��̵߳õ���Ȼ���Ƕ����������е��̡߳�

����ζ�ţ���������һ���������������ģ�SELECT���佫�ȴ�ֱ����û�и����ĸ��ġ�

Ϊ�˽�����һ�����н��кܶ�INSERT��SELECT������������������һ����ʱ���в����в���ż����������ʱ���ļ�¼���������ı���

�����������������

mysql> LOCK TABLES real_table WRITE, insert_table WRITE;
mysql> insert into real_table select * from insert_table;
mysql> delete from insert_table;
mysql> UNLOCK TABLES;

��������һЩ�ض��������������ּ��������ȴ�����������ʹ��LOW_PRIORITYѡ����INSERT����7.14 INSERT�䷨��

��Ҳ�ܸı�����mysys/thr_lock.c���е���������ʹ��һ���������С������������£�д�����Ͷ���������ͬ�����ȼ��������ܰ���һЩӦ�ó�����

10.2.9 ���ݿ���������������

MySQL�ı����������Dz��������ġ�

MySQLʹ�ñ�������(�������м��������м�����)�Դﵽ�ܸߵ������ٶȡ����ڴ��������������Դ�����Ӧ�ó�����˵���м�������һЩ�����ǵ�Ȼ��һЩȱ�ݡ�

��MySQL3.23.7�͸��߰汾�У�һ�����ܰ��в��뵽MyISAM��ͬʱ�����߳����ڶ��ñ���ע�⣬Ŀǰֻ���ڱ�������ɾ������ʱ�Ź�����

��������ʹ�ܶ��߳��ܹ�ͬʱ��һ��������������һ���߳���Ҫдһ���������������ȵõ���ռ��ȡȨ���ڸ����ڼ䣬����������Ҫ��ȡ���ض������߳̽��ȵ����ľ�����

��Ϊ���ݿ��ĸ���ͨ������Ϊ��SELECT����Ҫ������һ���������������ȴ�һ�����м�����Ϣ�������и��ߵ����ȼ�����Ӧ�ñ�֤���IJ���������������Ϊһ��������һ���ض����ᷢ���ܶ෱�صIJ�ѯ��

��MySQL 3.23.7��ʼ��һ���˿�����ʹ��max_write_lock_count����ǿ��MySQL��һ������һ���ض������IJ����󷢳�һ��SELECT��

�Դ�һ����Ҫ���������£�

������������һЩ���ܵĽ��������ǣ�

10.3 ʹ�������ݾ�����С

���������Ż�֮һ��ʹ��������(������)�ڴ�����(�������ڴ���)ռ�ݵĿռ価����С�����ܸ����޴��ĸĽ�����Ϊ���̶����Ͽ첢��ͨ��Ҳ�ý��ٵ����洢���������ڸ�С������������������Ҳռ�ݽ��ٵ���Դ��

�����������ļ���ʹ�������ܸ��ò���ʹ�洢�ռ���С��

10.4 MySQL������ʹ��

���������������ҳ���һ��������һ�ض�ֵ���С�û��������MySQL���ò������Ե�һ����¼��ʼ��Ȼ������������ֱ�����ҳ����ص��С���Խ�󣬻���ʱ��Խ�ࡣ���������ڲ�ѯ������һ��������MySQL�ܿ��ٵ���һ��λ��ȥ��Ѱ�������ļ����м䣬û�б�Ҫ�����������ݡ�����һ������1000�У�����˳����ȡ���ٿ�100����ע������Ҫ��ȡ��������1000�У����Ͽ���˳����ȡ����Ϊ��ʱ���DZ�������Ѱ����

���е�MySQL����(PRIMARY��UNIQUE��INDEX)��B���д洢���ַ������Զ���ѹ��ǰ׺�ͽ�β�ռ䡣��7.27 CREATE INDEX�䷨��

�������ڣ�

�ٶ��㷢������SELECT���䣺

mysql> SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;

����һ����������������col1��col2�ϣ��ʵ����п���ֱ�ӱ�ȡ���������ֿ��ĵ���������������col1��col2�ϣ��Ż�����ͼͨ�������ĸ��������ҵ����ٵ��в����ҳ����������Ե���������ʹ�ø�����ȡ�С�

��������һ�������������κ�������������ǰ׺�ܱ��Ż���ʹ�����ҳ��С����磬��������һ��3��������(col1,col2,col3)�����Ѿ���������(col1)��(col1,col2)��(col1,col2,col3)�ϵ�����������

�����в�����������������ǰ׺��MySQL����ʹ��һ�����ֵ��������ٶ���������ʾ��SELECT���䣺

mysql> SELECT * FROM tbl_name WHERE col1=val1;
mysql> SELECT * FROM tbl_name WHERE col2=val2;
mysql> SELECT * FROM tbl_name WHERE col2=val2 AND col3=val3;

����һ������������(col1��col2��col3)�ϣ�ֻ��������ʾ�ĵ�һ����ѯʹ���������ڶ����͵�������ѯȷʵ�����������У�����(col2)��(col2��col3)����(col1��col2��col3)��������ǰ׺��

����LIKE������һ������һ��ͨ�����ַ���ʼ��һ�������ַ�����MySQLҲΪLIKE�Ƚ�ʹ�����������磬����SELECT����ʹ��������

mysql> select * from tbl_name where key_col LIKE "Patrick%";
mysql> select * from tbl_name where key_col LIKE "Pat%_ck%";

�ڵ�һ�������У�ֻ������"Patrick" <= key_col < "Patricl"���С��ڵڶ��������У�ֻ������"Pat" <= key_col < "Pau"���С�

����SELECT���佫��ʹ��������

mysql> select * from tbl_name where key_col LIKE "%Patrick%";
mysql> select * from tbl_name where key_col LIKE other_col;

�ڵ�һ�������У�LIKEֵ��һ��ͨ�����ַ���ʼ���ڵڶ��������У�LIKEֵ����һ��������

���� column_name ��һ��������ʹ��column_name IS NULL��������ʹ��������

MySQLͨ��ʹ���ҳ������������е�������һ�������������������в��������Ƚϵ��У�=��>��>=��<��<=��BETWEEN��һ����һ����ͨ����ǰ׺��'something%'��LIKE���С�

�κβ���Խ����WHERE�Ӿ�������AND���ε������������Ż�ѯ�ʡ�

����WHERE�Ӿ�ʹ��������

... WHERE index_part1=1 AND index_part2=2
... WHERE index=1 OR A=10 AND index=2      /* index = 1 OR index = 2 */
... WHERE index_part1='hello' AND index_part_3=5
          /* optimized like "index_part1='hello'" */

��ЩWHERE�Ӿ���ʹ��������

... WHERE index_part2=1 AND index_part3=2  /* index_part_1 is not used */
... WHERE index=1 OR A=10                  /* No index */
... WHERE index_part1=1 OR index_part2=10  /* No index spans all rows */

10.5 ��ȡ���������ݵIJ�ѯ�ٶ�

���ȣ�һ������Ӱ�����е�ѯ�ʡ����е�����ϵͳ����Խ���ӣ����õ������Ŀ�����

�����㲻���κ�GRANT����ִ�У�MySQL����΢�Ż����ɼ��顣�����������кܴ�����ֵ�û�ʱ����������Ȩ���������������ɼ����и����Ŀ�����

����������������һЩ���Ե�MySQL�����йأ���������MySQL�ͻ��м�����ʱ�䣺

mysql> select benchmark(1000000,1+1);
+------------------------+
| benchmark(1000000,1+1) |
+------------------------+
|                      0 |
+------------------------+
1 row in set (0.32 sec)

������ʾMySQL����PentiumII 400MHz����0.32��ִ��1,000,000��+����ʽ��

����MySQL����Ӧ�ñ��߶��Ż��������Կ�����һЩ���Ⲣ��benchmark(loop_count,expression)���ҳ��Ƿ����IJ�ѯ��������һ�����ù��ߡ�

10.5.1 ���Ʋ�ѯ����

�ڴ����������£�����ͨ����������Ѱ���������ܡ���С�ı�����ͨ������1�δ���Ѱ�����ҵ���(��Ϊ�����������ܱ�����)���Ը����ı������ܹ�����(ʹ�� B++ ������)���㽫��Ҫ��log(row_count)/log(index_block_length/3*2/(index_length + data_pointer_length))+1��Ѱ���ҵ��С�

��MySQL�У�������ͨ����1024���ֽ�������ָ��ͨ����4���ֽڣ�����һ����һ����������Ϊ3(�е�����)�� 500,000 �еı����㣺log(500,000)/log(1024/3*2/(3+4)) + 1= 4 ��Ѱ����

��������������Ҫ����Լ 500,000 * 7 * 3/2 = 5.2M��(����������������������2/3(���ǵ��͵�))���㽫�������ڴ����������Ĵ󲿷ֲ����㽫���ܽ���Ҫ1-2���ô�OS���������ҳ��С�

Ȼ������д���㽫��Ҫ 4 ��Ѱ������(����)���ҵ����Ķ���������������ͨ����2��Ѱ������������������д���С�

ע�⣬��������ζ������Ӧ�ó��򽫻������� N log N �˻������������ø���ʱ��ֻҪһ�б�OS��SQL���������壬���齫�����������ٵظ����������ݱ���̫�����ܱ������������齫��ʼ���ø���ֱ������Ӧ�ó��������ܴ���Ѱ������(����N log N����)��Ϊ�˱����������ӣ������������������Ӷ����ӡ���10.2.3 ���ڷ�����������

10.5.2 SELECT��ѯ���ٶ�

�ܵ���˵��������Ҫʹһ��������SELECT ... WHERE���죬�����ĵ�һ�����������Ƿ�������һ����������10.4 MySQL ������ʹ�����ڲ�ͬ��֮������������ͨ��Ӧ�����������ɡ�������ʹ��EXPLAIN��ȷ���ĸ���������һ��SELECT���䡣��7.22 EXPLAIN�䷨(�õ�����һ��SELECT����Ϣ)��

һЩһ���Ľ��飺

10.5.3 MySQL�����Ż�WHERE�Ӿ�

where�Ż�������SELECT�У���Ϊ��������Ҫ������ʹ�������ͬ�����Ż�������DELETE��UPDATE���䡣

ҲҪע�⣬�����Dz���ȫ�ġ�MySQLȷʵ���������Ż�������û��ʱ��ȫ����¼���ǡ�

��MySQLʵʩ��һЩ�Ż��������棺

������һЩ�ܿ��IJ�ѯ���ӣ�

mysql> SELECT COUNT(*) FROM tbl_name;
mysql> SELECT MIN(key_part1),MAX(key_part1) FROM tbl_name;
mysql> SELECT MAX(key_part2) FROM tbl_name
           WHERE key_part_1=constant;
mysql> SELECT ... FROM tbl_name
           ORDER BY key_part1,key_part2,... LIMIT 10;
mysql> SELECT ... FROM tbl_name
           ORDER BY key_part1 DESC,key_part2 DESC,... LIMIT 10;

���в�ѯ��ʹ���������Ϳɽ���(���������������ֵ�)��

mysql> SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val;
mysql> SELECT COUNT(*) FROM tbl_name
           WHERE key_part1=val1 AND key_part2=val2;
mysql> SELECT key_part2 FROM tbl_name GROUP BY key_part1;

���в�ѯʹ������������˳������������һ��������������

mysql> SELECT ... FROM tbl_name ORDER BY key_part1,key_part2,...
mysql> SELECT ... FROM tbl_name ORDER BY key_part1 DESC,key_part2 DESC,...

10.5.4 MySQL�����Ż�LEFT JOIN

��MySQL�У�A LEFT JOIN Bʵ�����£�

10.5.5 MySQL�����Ż�LIMIT

��һЩ�����У�����ʹ��LIMIT #����ʹ��HAVINGʱ��MySQL���Բ�ͬ��ʽ������ѯ��

10.5.6 INSERT��ѯ���ٶ�

����һ����¼��ʱ�����������ɣ�

�����������е�������ʱ�������ȡ��ⲻ���Ǵ򿪱��ij�ʼ����(��Ϊÿ���������еIJ�ѯ��һ��)��

���Ĵ�С��N log N (B ��)���ٶȼ��������IJ��롣

�ӿ�������һЩ������

Ϊ�˶�LOAD DATA INFILE��INSERT�õ�һЩ�������ٶȣ������ؼ��ֻ���������10.2.3 ���ڷ�����������

10.5.7 UPDATE��ѯ���ٶ�

���IJ�ѯ���Ż�Ϊ��һ��д������һ��SELECT��ѯ��д�ٶ������ڱ��������ݴ�С�ͱ�����������������

ʹ���ĸ�������һ���������Ƴٸ��IJ���Ȼ��һ��һ�е����ܶ����ġ�����������������һ��һ�еغܶ����ı�һ����һ���졣

ע�⣬��̬��¼��ʽ�ĸ���һ���ϳ��ܳ��ļ�¼�������п���¼�����������㾭����������ʱ��ʱ��OPTIMIZE TABLE�Ƿdz���Ҫ�ġ���7.9 OPTIMIZE TABLE�䷨��

10.5.8 DELETE��ѯ���ٶ�

ɾ��һ����¼��ʱ�侫ȷ�����������������ȡ�Ϊ�˸����ٵ�ɾ����¼���������������������Ĵ�С����10.2.3 ���ڷ�����������

��һ����ɾ�������б�ɾ���е�һ�󲿷�ҲҪ�öࡣ

10.6 ѡ��һ�ֱ�����

��MySQL����ǰ(�汾 3.23.5)���ܴ�һ���ٶȹ۵���4���ñ��ĸ�ʽ֮��ѡ����

��̬MyISAM
���ָ�ʽ�����������ȫ�ĸ�ʽ����Ҳ���ڴ��̸�ʽ�����ġ��ٶ��������������ڴ����ϱ��ҵ������׷�ʽ����������һ�������;�̬��ʽ�Ķ���ʱ�����ܼ򵥣�ֻ���г��ȳ�����������������ɨ��һ�ű�ʱ����ÿ�δ��̶�ȡ�����볣������¼�Ǻ����׵ġ���ȫ��������������д��һ����̬MyISAM�ļ�ʱ�����ļ�����������myisamchk�ܺ�����ָ��ÿ�����Ķ���ʼ�ͽ�����������ͨ���ܻ������м�¼�����˲��ֱ�д�����Ǹ���ע�⣬��MySQL�У������������ܱ��ؽ���
��̬MyISAM
���ָ�ʽ�е㸴�ӣ���Ϊÿһ�б�����һ��ͷ˵�����ж೤����һ����¼�ڸ���ʱ�䳤ʱ����Ҳ�����ڶ���һ��λ���Ͻ���������ʹ��OPTIMIZE table��myisamchk����һ�ű�����������ͬһ����������ijЩVARCHAR��BLOB��������ȡ/�ı��ľ�̬���ݣ�����̬����������һ�����Ա�����Ƭ������һ�������⡣
ѹ��MyISAM
����һ��ֻ�����ͣ��ÿ�ѡ��myisampack�������ɡ�
�ڴ�(HEAP �ѣ�
���ֱ���ʽ��С��/���Ͳ��ұ�ʮ�����á��Կ���/����һ�����õIJ��ұ�(������)��һ��(Ҳ����ʱ)HEAP���п��ܼӿ����������ᡣ�ٶ�������Ҫ���������ᣬ��ͬ�����ݿ���Ҫ����ʱ�䡣
SELECT tab1.a, tab3.a FROM tab1, tab2, tab3
        WHERE tab1.a = tab2.a and tab2.a = tab3.a and tab2.c != 0;

Ϊ�˼����������ǿ���tab2��tab3�����ᴴ��һ����ʱ������Ϊ����ͬ��( tab1.a )���ҡ������Ǵ����ñ��ͽ���ѡ�������

CREATE TEMPORARY TABLE test TYPE=HEAP
        SELECT
                tab2.a as a2, tab3.a as a3
        FROM
                tab2, tab3
        WHERE
                tab2.a = tab3.a and c = 0;
SELECT tab1.a, test.a3 from tab1, test where tab1.a = test.a1;
SELECT tab1.b, test.a3 from tab1, test where tab1.a = test.a1 and something;

10.6.1 ��̬(����)�����ص�

10.6.2 ��̬�����ص�

10.6.3 ѹ�������ص�

MySQL��֧�ֲ�ͬ���������ͣ�����һ����������ISAM������һ��B�������������ܴ��Ե�Ϊ�����ļ�������СΪ(key_length+4)*0.67�������еļ��ϵ��ܺ͡������Ƕ�������������м�������˳�򱻲���ʱ����

�ַ��������ǿհ�ѹ���ġ�������һ������������һ���ַ�������Ҳ��ѹ��ǰ׺�������ַ������кܶ�β���հ׻���һ���ܲ����õ�ȫ����VARCHAR�У��հ�ѹ��ʹ�����ļ���С�������ܶ��ַ�������ͬ��ǰ׺��ǰ׺ѹ�����а����ġ�

10.6.4 �ڴ������ص�

�����ӽ��������ڴ��У���������mysqld���ص������������ǽ���ʧ��������Ϊ���������죬�����������������õġ�

MySQL�ڲ���HEAP��ʹ��û����������100%��̬��ϣ����û����ɾ���йص����⡣

��ֻ��ͨ��ʹ���ڶѱ��е�һ���������õ�ʽ��ȡ����(ͨ����=������)��

�ѱ���ȱ���ǣ�

  1. ��ҪΪ����Ҫͬʱʹ�õ����жѱ���Ҫ�㹻�Ķ����ڴ档
  2. �㲻����������һ��������������
  3. �㲻��˳��������һ����Ŀ(��ʹ������������һ��ORDER BY)��
  4. MySQLҲ����������2��ֵ֮�������ж����С��ⱻ�Ż���ʹ��������ʹ���ĸ���������������һ������������Ҫ����Ѱ����

10.7 �����Ż�����

�Լӿ�ϵͳ��δ�����Ľ����ǣ�

10.8 ʹ�����Լ��Ļ�׼����

������Ӧ�ò�������Ӧ�ó��������ݿ⣬�Է���ƿ�����Ķ���ͨ��������(��ͨ����һ������ģ�顱����ƿ��)����������ȷ����һ��ƿ��(�ȵ�)����ʹ������Ӧ�ó�����˵���������ܡ��㹻�á���������Ӧ�ö�ÿ��ƿ����һ�����ƻ���������ij�ˡ�ȷʵ��Ҫ�������������ν�������

����һЩ����ֲ�Ļ�׼���������ӣ��μ�MySQL��׼�׼�����11 MySQL ��׼�׼����������������׼����κγ�������Ϊ������Ҫ�޸�����ͨ�������������ܳ��Բ�ͬ�����������Ľ���������������һ�������������Ľ���������

��ϵͳ���ط���ʱ����һЩ�����Ǻ��ձ��ģ����������кܶ���������ϵ�Ŀͻ�������������ϵͳ����һ��(����)ϵͳ�����и������⡣��ĿǰΪֹ����һ����Щ�������������������йص�����(��ɨ���ڸ߸���ʱ���ֲ���)��OS/�����⡣����ϵͳ�Ѿ���������ϵͳ�У����Ǵ�������������������

Ϊ�˱������������⣬��Ӧ�ð�һЩ���������ڿ�����ĸ����²�����������Ӧ�ã�

10.9 ����ѡ��

MySQL�ڷֿ����ļ��д洢�����ݺ��������ݡ�����(����ȫ��)�������ݿ���ͬһ���ļ��л����к��������ݡ��������ţ�MySQL��ѡ���Էdz��㷺���ִ�ϵͳ����˵�ǽϺõġ�

�洢�����ݵ���һ����������һ���ֿ������򱣴�ÿ����Ϣ(������SDBM��Focus)���⽫��ÿ����ȡ����һ�еIJ�ѯ����һ������ͻ�ơ���Ϊ�ڶ���һ�б���ȡʱ���������˻���������������ģ�Ͷ�ͨ�ù��ܵ����ݿⲻ�����á�

������������������������һ�𱻴洢(����Oracle/Sybase)�������������У��㽫��������Ҷ��ҳ�����ҵ�����Ϣ�����Ⲽ�ֵĺô�����������������(ȡ������������������������)��ʡһ�δ��̶������Ⲽ�ֵĻ����ǣ�

10.10 MySQL���ƾ���/����

��ΪMySQLʹ�ü����ı�����(���ζ�/һ��д)�����µ�������������ͬһ�����е�һ���������ȶ�������������ѡ����һ�����ϡ�

�������ţ������������£��Դ�����ϵͳ���쳣���ٵ�����ʹ����Ϊһ��Ӯ�ҡ���������ͨ��Ҳ����ͨ�����Ķ���������������������Ҫ��������������Ӳ����

��һЩ������Ӧ�û���������Ҳ�ڿ���һЩ��չ�����Խ��������⡣

10.11 ����ֲ��

��Ϊ����SQL������ʵ����SQL�IJ�ͬ���֣�Ҫ��������д����ֲ��SQLӦ�ó��򡣶Ժܼ򵥵�ѡ��/���룬���Ǻ����׵ģ���������ҪԽ�࣬��Խ���ѣ�������������ҪӦ�ó����Ժܶ����ݿⶼ�죬�����ø��ѣ�

Ϊ��ʹһ������Ӧ�ó�������ֲ������Ҫѡ����Ӧ����֮�����ĺܶ�SQL��������

������ʹ��MySQL��crash-me ������http://www.mysql.com/crash-me-choose.htmy�����ҳ�������֮ʹ�õ����ݿ���������ѡ���ĺ��������ͺ����ơ�crash-me���ڶ��κο��ܵ����������˺ܳ�ʱ�䣬��������Ȼ�������Թ��Ĵ�Լ450�����顣

���磬��������Ҫ��ʹ��Informix �� DB2���㲻Ӧ���б�18���ַ�������������

MySQL��׼������crash-me�Ƕ��������ݿ��ġ�ͨ���۲�������ô�����������ܵõ�һ���о���������Ϊ��д���Ķ��������ݿ���Ӧ�ó�����ʲô����׼��������MySQLԴ�����ַ�����sql-bench��Ŀ¼���ҵ���������DBI���ݿ��ӿ���Perlд��(�����������Ĵ�ȡ����)��

��http://www.mysql.com/benchmark.html��������׼�Ľ�����

������������Щ�����������������������ݿⶼ��һЩ���㡣���������Dz�ͬ���������Ե��µIJ�ͬ��Ϊ��

������Ϊ���ݿ��Ķ����Զ�Ŭ��������Ҫ����ÿ��SQL������ƿ�������ø��ܡ�MySQL�ڼ����͸��·����ܿ죬������ͬһ�����ϻ��϶���/д�߷��潫��һ�����⡣����һ���棬������ͼ��ȡ�����������˵���ʱ��Oracle��һ���ܴ�����(ֱ�����DZ����յ�������)���������ݿ��ܵ���˵�ڴӼ�¼�ļ����������ܽ������Ǻܺã���Ϊ�����������£��м���������û�ô���

Ϊ��ʹ����Ӧ�ó�����ȷʵ���������ݿ⡱������Ҫ����һ�����׵Ŀ���չ�Ľӿڣ��������ɲ����������ݡ���ΪC++�ڴ�����ϵͳ�Ͽ��Եõ��ģ�ʹ�����ݿ���һ��C++ ���ӿ����������ġ�

������ʹ��һЩij�����ݿ��ض��Ĺ���(��MySQL�У���REPLACE����)����Ӧ��ΪSQL����������һ��������ʵ��ͬ���Ĺ��� (������Щ)����MySQL������ʹ��/*! */�﷨��MySQL�ض��Ĺؼ��ʼӵ���ѯ�С���/**/�еĴ��뽫������������SQL��������Ϊһƪע��(������)��

�������������ı�׼ȷ�Ը���Ҫ��������һЩwebӦ�ó���������һ�ֿ������Ǵ���һ��Ӧ�ò㣬�������еĽ����Ը������ߵ����ܡ�ͨ��ֻ�����ϵĽ����ڶ�ʱ���󡮹��ڡ������ܱ��ֻ���������ˢ�¡����ڼ��߸��ص����������൱�����ģ��ڴ������£����ܶ�̬�����ӻ��浽���������趨�ϸߵĹ���ʱ��ֱ��һ�лص�������

�����������£�������Ϣ�ı�Ӧ�ð���������ʼ��С�ͱ�һ��Ӧ�ñ�ˢ�¼��ε���Ϣ��

10.12 �����ѽ�MySQL���ںδ���

��MySQL���������ڼ䣬MySQL�Ĺ����ʺ����ǵ������ͻ�������Ϊ��������һЩ�����������̴������ݲֿ⡣

���Ǵ������̵��õ����к��������׵�ÿ���ܽᲢ�����DZ�����Ϊ���е����ṩ���õ���Ϣ�԰������ǵó����ǵĹ���ս����Ӱ�����ǵĹ˿͡�

�������൱������(��Լÿ��7�����ڽ����ܽ�)�������DZ���4-10������������Ҫ���ָ��û�������ÿ�ܹ˿������õ�������������Ҫ�����̡��������Ը����ݵ��±��档

����ͨ��ÿ�½�������Ϣ�洢��ѹ���ġ����ס���������������������һ�׼򵥵ĺ�/�ű������������Խ��ױ��IJ�ͬ����( ��Ʒ�飬�˿�id���̵�...)���ܽ�������������һ�������﷨������ҳ��Сperl�ű���̬���ɵ���ҳ���ڽű���ִ��SQL���䲢�Ҳ����������������Ǻ���ʹ��PHP��mod_perl��������ʱ����û�С�

��ͼ�����ݣ�������C���Ա�д��һ���򵥵Ĺ��ߣ����ܻ���SQL��ѯ�Ľ���(�Խ�����һЩ����)������Ʒ����Ҳ�ӷ���HTML�ļ���perl�ű��ж�̬��ִ�С�

�ڴ����������£�һ���µı���ͨ���򵥵ظ���һ�����нű������޸����е�SQL��ѯ�����ɡ���һЩ�����£����ǽ���Ҫ�Ѹ������ֶμӵ�һ�����е��ܽ����л�����һ���µģ�������Ҳ�൱�򵥣���Ϊ�����ڴ����ϱ������н��ױ�����Ŀǰ����������50G�Ľ��ױ���200G�������˿�����)��

����Ҳ�����ǵĹ˿�ֱ����ODBC��ȡ�ܽ����Ա��߼��û����Լ��������ݡ�

�����÷dz��е���Sun Ultra sparcstation ( 2x200 Mz )��������û���κ����⡣�������������˷�����֮һ��һ̨2��CPU 400 Mz��Ultra sparc�������������ڼƻ�������Ʒ���Ľ��ף��⽫��ζ����������10����������Ϊ������ͨ��ֻ��Ϊ���ǵ�ϵͳ���Ӹ����Ĵ��̾��ܸ�������

����Ҳ������Intel-Linux�Ա��ܸ����˵صõ�������cpu��������Ȼ�����ж����ƿ���ֲ�����ݿ���ʽ(��3.32������)�����ǽ���ʼ��Ӧ�ó�����ijЩ����ʹ������

���������ĸо���Linux�ڵ͵��еȸ���ʱִ�еĽϺã������㿪ʼ�õ����µĸ߸���ʱ��Solaris�����ָ��ã���Ϊ����IO�ļ��ޣ��������ǻ�û�й����ⷽ�����κν��ۡ�����һЩLinux���Ŀ����ߵ������Ժ����������� Linux �ĸ����ã�������������̫������Դʹ�ý��������ܱ��úܵ͡����������������ڽ���ʱ����ʹ�����о��������޷�Ӧ��ϣ���⽫��δ����Linux�ں��н�����


��һ��, ǰһ��, ��һ��, ����һ��