OneSQL :: 按用户名控制并发量,实现单MySQL实例上不同应用和平共处

在几个群里讨论了一下Spark over OneProxy的数据分析方案,有人问到在OLTP的数据库上直接用Spark做数据分析,是否会影响到在线事务处理的应用,这个方面不用担心,已经早有对策。平民软件的OneSQL可以根据用户名限制同时执行SQL的工作线程数,针对上述情况,可以创建两个数据库用户,一个给应用程序使用,另一个给Spark使用。如下所示:

create user oltp_user ... identified by ...;
create user olap_user ... identified by ...;

接下来在OneSQL中设置如下参数,即可以对”olap_user”用户的连接做并发控制。比如最多允许4个SQL或事务同时执行,如下所示:

tcc_max_user_concurrency      =   olap_user:4

这个参数也可以在运行时动态修改,如下所示:

mysql> set global tcc_max_user_concurrency='olap_user:4';
Query OK, 0 rows affected (0.03 sec)

在上面的配置中,通过”olap_user”的连接受并发控制,而通过”oltp_user”的连接则不受控制,接下来可以使用合表扫描的SQL来进行高并发的测试,可以看到通过”olap_user”的高并发压力并不能将机器的资源用完,从而可以保证在OLTP上做Spark分析的可行性。