We know that we can put a large number of records of MySQL big table according to the primary key, Time field, conditional field, etc. into several tables and even saved in several servers.
The only problem is that the query is cumbersome across servers and can only be solved through the application. Talk about the solution in Java. Other language principles are similar.
The table here is not the partition of MySQL 5.1, but the person who has several tables or different servers for separating a table.
1. Application level Implementation
See schematic
Electthreadmanager table data Query Manager
It establishes a thread pool for each database or server of the table
AddTask ()-Add Task
Stoptask ()-Stop Task
GetResult ()-Get execution results
Fastest execution time = slowest MySQL node query consumption time
Slowest Execution time = timeout period
A ThreadPool busy process
1. If Threadpooln is very busy, (also means DB N is very busy);
2. New Query task arrives, AddTask (), a thread of the new task is added to the THREADPOOLN task Queue
3. The outer application has obtained other thread return results and continues to wait
4. The outer application waits for the time to timeout, calls Stoptask () sets the task all thread The outer application returns the STOP flag in the
5. After a certain period of time, Threadpooln takes the queue thread, because the thread runs directly when the stop bit is set.
2. JDBC Layer implementation
do a JDBC Driver wrapper, intercept PreparedStatement, Statement executequery ()
and then call Selectthreadmanager complete
3. MySQL partition
MySQL 5.1 partition function because of the single sheet of data across files, batch query the same problem, but it is implemented within the MySQL, do not need external caller concern. The principle of its query implementation should be broadly similar.
However, partition only solves the bottleneck of IO and does not solve the bottleneck of CPU calculation, so it cannot replace the traditional manual table method.