Amoeba For MySQL 功能测试让人满意
同事 Struct Chen 的 Amoeba For MySQL 项目已经 出来不短时间了,可一直没有时间好好体验,最近一直在做一些软件和硬件的功能以及性能相关的测试工作,Amoeba For MySQL自然也将被列入计划之内。 对 Amoeba For MySQL 的测试到目前位置主要还是功能方面的测
同事 Struct Chen 的 Amoeba For MySQL 项目已经 出来不短时间了,可一直没有时间好好体验,最近一直在做一些软件和硬件的功能以及性能相关的测试工作,Amoeba For MySQL自然也将被列入计划之内。
对 Amoeba For MySQL 的测试到目前位置主要还是功能方面的测试,配置了一套四台机器的环境:
Server A: Amoeba Server
Server B: MySQL Master
Server C: MySQL Slave1
Server D: MySQL Slave2
软件环境:RHEL5.2 (X86_64),JAVA 1.5.0_16, Amoeba For MySQL 0.31
测试功能:
1、读写分离
2、数据垂直切分
3、数据水平切分
amoeba.xml配置如下:
?xml版本="1.0"编码="gbk"?>
!DOCTYPE变形虫:配置系统“amoeba.dtd”>
变形虫:配置xmlns:amoeba="http://amoeba.meidusa .com/">
服务器>
属性名称="港口">8066属性>
属性名称="ip 地址“>10.0.38.21属性>
属性名称="readThreadPoolSize">500属性>
属性名称="clientSideThreadPoolSize">500属性 >
属性名称="serverSideThreadPoolSize" >500房产>
属性 名称="netBufferSize">200 属性>
属性名称="tcpNoDelay">true属性 >
属性名称=" 用户">用户属性>
属性名称="密码">密码属性>
服务器>
< ;连接管理器列表>
连接管理器名称 ="defaultManager">
类名>com.meidusa.amoeba.net.AuthingableConnectionManager类名>
连接管理器>
connectionmanagerlist>
数据库服务器列表>
数据库服务器姓名="师父">
工厂配置>
类名>com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory类名>
物业姓名="经理“>defaultManager属性>
属性名称="端口“>3306属性>
属性名称="ip 地址“>10.0.38.37属性>
属性名称="架构“>测试属性>
属性名称="用户 ">根属性>
属性名称="密码">密码属性>
工厂配置>
poolconfig>
类名>com.meidusa .amoeba.net.poolable.PoolableObjectPool类名>
属性名称="maxActive">500房产>
属性名称="maxIdle"> 200房产>
属性名称="minIdle">10属性>
属性名称="minEvictableIdleTimeMillis">600000 房产>
房产名称="timeBetweenEvictionRunsMillis">600000房产>
房产名称="testOnBorrow">true属性>
属性名称="testWhileIdle" >true属性>
poolconfig>
数据库服务器 >
数据库服务器名称="slave1">
工厂配置>
类名>com.meidusa.amoeba .mysql.net.MysqlServerConnectionFactory类名>
物业姓名="经理"> defaultManager属性>
属性名称="端口">3306房产>
房产名称="ip 地址">10.0 .38.22财产>
财产名称="架构">测试属性>
<propertyname="user">rootproperty>
<propertyname="password">passwordproperty>
工厂配置>
poolconfig>
类名>com.meidusa .amoeba.net.poolable.PoolableObjectPool类名>
属性名称="maxActive">500房产>
属性名称="maxIdle"> 200房产>
属性名称="minIdle">10属性>
属性名称="minEvictableIdleTimeMillis">600000 房产>
房产名称="timeBetweenEvictionRunsMillis">600000房产>
房产名称="testOnBorrow">true属性>
<propertyname="testWhileIdle">trueproperty>
poolconfig>
dbserver>
<dbservername="slave2">
<factoryconfig>
... ...
factoryconfig>
<poolconfig>
... ...
poolconfig>
dbserver>
<dbservername="virtualSlave"virtual="true">
<poolconfig>
类名>com.meidusa.amoeba.server.MultipleServerPool 类名>
属性名称="负载平衡">1属性>
属性名称="poolNames" >slave1,slave2属性>
poolconfig>
数据库服务器>
数据库服务器列表>
查询路由器>
类名>com.meidusa.amoeba.mysql.parser.MysqlQueryRouter类名> ;
属性名称="ruleConfig">${amoeba.home}/conf/rule.xml房产>
房产名称="functionConfig">${amoeba.home}/conf/functionMap.xml房产>
<房产名称="ruleFunctionConfig">${amoeba.home}/conf /ruleFunctionMap.xml属性>
<属性名称="LRUMapSize" >1500房产>
<属性名称="defaultPool">主人属性>
<属性名称="writePool">主人属性>
<属性名称="readPool" >virtualSlave属性>
<属性名称="needParse">true属性>
< ;/queryrouter>
变形虫>;
rule.xml配置:
?xml版本="1.0"编码="gbk"?>
!DOCTYPE变形虫:规则系统“rule.dtd”>
变形虫:rulexmlns:amoeba="http://amoeba.meidusa .com/">
表规则名称="test_horiz"架构="测试"defaultPools="master" >
规则名称=" 规则1">
参数>ID参数>
表达式> ![CDATA[ ID 100000000]]>表达式>
defaultpools>master默认池>
读取池>slave1 读取池>
写入池>master写入池>
规则>
<规则名称="规则2">
<参数>ID参数>
<表情>< ![CDATA[ ID100000001和200000000 ]]>表情>
<<defaultpools>masterdefaultpools>
<写入池>master2写入池>
<读取池>slave2 读取池>
规则>
<规则名称="规则 3">
<参数>ID参数>
<表达式> ![CDATA[ ID > 200000000 ]]>表达式>
defaultpools>masterdefaultpools>
规则>
tablerule>
tablerule名称="master"架构="测试 "defaultPools="master"/>
tablerule名称="slave1 "架构="测试"默认池="slave1"/>
<表规则名称="slave2"架构="测试"defaultPools= "slave2"/>
表规则名称="master"架构= "t"defaultPools="master"/>
变形虫>
由于第一步主要还只是测试读写分离与数据的垂直切分,所以水平切分的规则设置的很简单,按照ID的范围设置简单的规则。而设置一些更为复杂的规则。
总体测试效果还是比较满意的,预期的功能都一切正常,当然所用于测试的SQL语句也大都比较简单,主要还是根据当前工作中遇到的一些SQL。
这次测试没有进行性能测试,等后面再找时间测试一下,不知道有没有哪位朋友已经进行了相应的性能测试了?性能测试之后就要开始规划应用到上面的某些应用去了
译文地址:Amoeba For MySQL 功能测试让人满意,感谢原作者分享。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

大数据结构处理技巧:分块:分解数据集并分块处理,减少内存消耗。生成器:逐个产生数据项,无需加载整个数据集,适用于无限数据集。流:逐行读取文件或查询结果,适用于大文件或远程数据。外部存储:对于超大数据集,将数据存储在数据库或NoSQL中。

可以通过以下方式优化MySQL查询性能:建立索引,将查找时间从线性复杂度降至对数复杂度。使用PreparedStatements,防止SQL注入并提高查询性能。限制查询结果,减少服务器处理的数据量。优化连接查询,包括使用适当的连接类型、创建索引和考虑使用子查询。分析查询,识别瓶颈;使用缓存,减少数据库负载;优化PHP代码,尽量减少开销。

在PHP中备份和还原MySQL数据库可通过以下步骤实现:备份数据库:使用mysqldump命令转储数据库为SQL文件。还原数据库:使用mysql命令从SQL文件还原数据库。

如何将数据插入MySQL表中?连接到数据库:使用mysqli建立与数据库的连接。准备SQL查询:编写一个INSERT语句以指定要插入的列和值。执行查询:使用query()方法执行插入查询,如果成功,将输出一条确认消息。

MySQL 8.4(截至 2024 年的最新 LTS 版本)中引入的主要变化之一是默认情况下不再启用“MySQL 本机密码”插件。此外,MySQL 9.0完全删除了这个插件。 此更改会影响 PHP 和其他应用程序

要在PHP中使用MySQL存储过程:使用PDO或MySQLi扩展连接到MySQL数据库。准备调用存储过程的语句。执行存储过程。处理结果集(如果存储过程返回结果)。关闭数据库连接。

使用PHP创建MySQL表需要以下步骤:连接到数据库。创建数据库(如果不存在)。选择数据库。创建表。执行查询。关闭连接。

Oracle数据库和MySQL都是基于关系模型的数据库,但Oracle在兼容性、可扩展性、数据类型和安全性方面更胜一筹;而MySQL则侧重速度和灵活性,更适合小到中等规模的数据集。①Oracle提供广泛的数据类型,②提供高级安全功能,③适合企业级应用程序;①MySQL支持NoSQL数据类型,②安全性措施较少,③适合小型到中等规模应用程序。
