���

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 Ӧ�û�����ʹ��.

Key Features

��Ҫ����

  • ͸��ʹ��, ��������ʹ��.

    • ֧�����е� 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.

On the name

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.