Mysql ���Ӹ��ƺ��ؾ����� (mysqlnd_ms) ���������Ǻܼ�֧ ������ʹ�� mysqlnd �� PHP MySQL ��չ��
�Դ� PHP 5.3.3 �汾��MySQL native driver ��һ�� C API �ӿڵķ�ʽ���ڡ���� C ����� ����ͨ�� mysqlnd ��ɶ� MySQL ���Ӹ��ƺ��ؾ��� ����ع�����չ��
�� PHP 5.3.0 �Ժ�MySQL native driver ������ C ��ķ�ʽ���������Բ���ķ�ʽ��� MySQL Client �� (libmysqlclient) �����á�ʹ�� mysqlnd �м����ô�: ����Ҫ�ر��������ݣ� ���Ѿ��������� PHP ����; ������ PHP ���Э��; �������ĸ�С���ڴ�; �����������ܶ��µ� �������� (���磺�첽��ѯ).
Mysqlnd ��� (���� mysqlnd_ms) ���Ǵ��û���ʹ��Ҫ������������. mysqlnd_ms ֧�����е� PHP Ӧ��, �����е� MySQL PHP ��չ. �������ı����е� APIs, ���������Ժ����������е� PHP Ӧ�û�����ʹ��.
��Ҫ����
��ʹ��, ��������ʹ��.
֧�����е� PHP MySQL ��չ
֧�� SSL
һ�µ� API �ӿ�
ֻ��Ҫ��С�Ļ���ʹ����Ҫ�ķ����趨
�������ӣ�ֻ��ʵ�ʵ� SQL ִ��ʱ���Ż��� Master �� Slaver ��������
��ѡ���� Web request �ĵ�һ��д�Ժ��Զ�ʹ�� Master, ���Ϳ��ܵ����Ӹ��Ƶ���ʱӰ��
������ MySQL Cluster ��ʹ��
MySQL Replication: ʵ�ֶ�д����, �����ҪΪ MySQL Replication ��д
MySQL Cluster: ���Խ��ö�д����, ����ʹ�ö�� Master
�������������: ���Ϊ MySQL Replication ���ƿ���, ����Ҳ���������������� MySQL Cluster �������
��������
�Զ���� SELECT ���
Supports SQL hints to overrule automatism.
�û��Զ���
���Ա����ã�������ʹ��ͬ�� Cluster ʱ
���ؾ������
Round Robin: ���ÿһ�� slave ��ѯ��ʹ�ò�ͬ�� slave����ѭ��ʽ
Random: ���ѡ�� slave
Random once (sticky): ���ѡȡһ�� slave, �����ҳ������������, ��������� slave
User-defined: Ӧ�ÿ����� mysqlnd_ms ��ע��һ�� callback
�� PHP 5.4.0 �Ժ�汾���������ͨ��������Ƶ� API ���ý��д���
Weighted load balancing: Slave ���Ա����䲻ͬ�����ȼ�, ����; �����ø���IJ�ѯ��һ�����õ��豸��ִ��, ������һ���������豸��ѯ�Խ�����ʱӰ��
Global transaction ID
Client-side emulation. Makes manual master server failover and slave promotion easier with asynchronous clusters, such as MySQL Replication.
֧�� MySQL 5.6.5 ���ϰ汾���õ� GTID.
�� Session һ���Բ����£�����ͨ�� GTID ����첽 slave ��ȡ���µ����ݡ�
Throttling: optionally, the plugin can wait for a slave to become "synchronous" before continuing.
�����һ���Լ���
Ӧ�ÿ�����������ѡ�����ա�session ��ǿһ���Է�������ʵ�ͨѶ�ڵ� ���Զ�����ѡ��
����һ����ʱ��MySQL ����ͬ���� slave ���Ա����� cache �滻�����ڽ��ͷ��������ء�
��������
���ݿ�Ⱥ���еķ����������Ա����嵽���У����� SQL hints �����ֶ���ָ�����ض������н��в�ѯ�� �����������ݷ�����������������ȵ�ĸ��¡�
MySQL ����ͬ�����˿���ͨ���������֧�֡�
���õĶ�д������Ʒdz�����, �κ�һ���� SELECT ��ͷ�IJ�ѯ, ������Ϊ�Ƕ�����, �Ӷ����� slave ������. ���������IJ�ѯ (���� SHOW) ���ᱻ��Ϊ��д������ �������� master ������. ���õIJ�����������ͨ����д SQL hints �ı�, ����ʹ��һ���û������ callback ʵ��.
��д���벻���ṩ���ڶ��ѯ�Ľṹ֧��, ���ѯ����ᱻ��Ϊ��һ����һ��ѯ. ͨ����ͷ���ַ������������ִ����Щ��ѯ. ����, ���ʹ�� mysqli_multi_query() ִ�ж��ѯ SELECT id FROM test; INSERT INTO test(id) VALUES (1) ���ᱻ��Ϊ��һ����ѯ������ �������� slave ������, ��Ϊ����ͷʹ���� SELECT. ���е� INSERT �ṹ�������ᱻ���� master ������.
Note:
Ӧ�ñ���֪�������л�����Ҫ��, ���Ǹ��ؾ����Ĺ��. ���Բ鿴���˵��: connection pooling and switching, transaction handling, failover load balancing �� read-write splitting.
The shortcut mysqlnd_ms stands for mysqlnd master slave plugin. The name was chosen for a quick-and-dirty proof-of-concept. In the beginning the developers did not expect to continue using the code base.