Oracle 5.0 Reference Manual page 2666

Table of Contents

Advertisement

Mysqlnd replication and load balancing plugin (mysqlnd_ms)
Find whether to send the query to the master, the slave or the last used MySQL server
Description
int mysqlnd_ms_query_is_select(
string query);
Finds whether to send the query to the master, the slave or the last used MySQL server.
The plugins built-in read/write split mechanism will be used to analyze the query string to make a
recommendation where to send the query. The built-in read/write split mechanism is very basic and
simple. The plugin will recommend sending all queries to the MySQL replication master server but
those which begin with SELECT, or begin with a SQL hint which enforces sending the query to a slave
server. Due to the basic but fast algorithm the plugin may propose to run some read-only statements
such as
SHOW TABLES
Parameters
query
Return Values
A return value of
MYSQLND_MS_QUERY_USE_MASTER
MySQL replication master server. The function returns a value of
if the query can be run on a slave because it is considered read-only. A value of
MYSQLND_MS_QUERY_USE_LAST_USED
server. This can either be a MySQL replication master server or a MySQL replication slave server.
If read write splitting has been disabled by setting mysqlnd_ms.disable_rw_split, the function will
always return
MYSQLND_MS_QUERY_USE_MASTER
Examples
Example 20.301.
mysqlnd_ms_query_is_select
<?php
function is_select($query)
{
switch (mysqlnd_ms_query_is_select($query))
{
case MYSQLND_MS_QUERY_USE_MASTER:
printf("'%s' should be run on the master.\n", $query);
break;
case MYSQLND_MS_QUERY_USE_SLAVE:
printf("'%s' should be run on a slave.\n", $query);
break;
case MYSQLND_MS_QUERY_USE_LAST_USED:
printf("'%s' should be run on the server that has run the previous query\n", $query);
break;
default:
printf("No suggestion where to run the '%s', fallback to master recommended\n", $query);
break;
}
}
is_select("INSERT INTO test(id) VALUES (1)");
is_select("SELECT 1 FROM DUAL");
is_select("/*" . MYSQLND_MS_LAST_USED_SWITCH . "*/SELECT 2 FROM DUAL");
?>
The above example will output:
INSERT INTO test(id) VALUES (1) should be run on the master.
on the replication master.
Query string to test.
is returned to recommend running the query on the last used
2646
indicates that the query should be send to the
MYSQLND_MS_QUERY_USE_SLAVE
or
MYSQLND_MS_QUERY_USE_LAST_USED
example
.

Advertisement

Table of Contents
loading

This manual is also suitable for:

Mysql 5.0

Table of Contents