提交 fc9473ee authored 作者: 陈世营's avatar 陈世营

分表分库 多线程性能测试

上级 25ac2c72
...@@ -2,7 +2,9 @@ package com.loit.shardingsphere.seata.nacos.feign.controller; ...@@ -2,7 +2,9 @@ package com.loit.shardingsphere.seata.nacos.feign.controller;
import com.loit.shardingsphere.seata.nacos.feign.modules.entity.OrderEntity; import com.loit.shardingsphere.seata.nacos.feign.modules.entity.OrderEntity;
import com.loit.shardingsphere.seata.nacos.feign.modules.entity.OrderItemEntity;
import com.loit.shardingsphere.seata.nacos.feign.modules.service.IBusinessService; import com.loit.shardingsphere.seata.nacos.feign.modules.service.IBusinessService;
import com.loit.shardingsphere.seata.nacos.feign.modules.service.IOrderItemService;
import com.loit.shardingsphere.seata.nacos.feign.modules.service.IOrderService; import com.loit.shardingsphere.seata.nacos.feign.modules.service.IOrderService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -21,15 +23,18 @@ import java.util.List; ...@@ -21,15 +23,18 @@ import java.util.List;
public class DemoController { public class DemoController {
@Resource(name = "businessService") @Resource(name = "businessService")
IBusinessService businessService; private IBusinessService businessService;
@Resource(name = "orderService") @Resource(name = "orderService")
IOrderService orderService; private IOrderService orderService;
@Resource(name = "orderItemService")
private IOrderItemService orderItemService;
@GetMapping("purchase") @GetMapping("purchase")
public void purchase() { public void purchase() {
long startTime = System.currentTimeMillis(); //获取开始时间 long startTime = System.currentTimeMillis(); //获取开始时间
for (long i = 10000000; i <= 20000000; i++) { for (long i = 20000005; i <= 30000000; i++) {
try { try {
businessService.purchase(i); businessService.purchase(i);
} catch (Exception e) { } catch (Exception e) {
...@@ -56,6 +61,18 @@ public class DemoController { ...@@ -56,6 +61,18 @@ public class DemoController {
log.info("success"); log.info("success");
} }
@GetMapping("findOrderItemPage")
public void findOrderItemPage(Long orderId) {
long startTime = System.currentTimeMillis(); //获取开始时间
List<OrderItemEntity> pageList = orderItemService.findPage(orderId, 0l, 20l);
log.info(pageList.toString());
long endTime = System.currentTimeMillis(); //获取结束时间
log.error("程序运行时间:" + (endTime - startTime) + "ms"); //输出程序运行时间
log.info("success");
}
@GetMapping("getById") @GetMapping("getById")
public void getById(String orderId) { public void getById(String orderId) {
......
...@@ -4,6 +4,12 @@ package com.loit.shardingsphere.seata.nacos.feign.modules.service; ...@@ -4,6 +4,12 @@ package com.loit.shardingsphere.seata.nacos.feign.modules.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.loit.shardingsphere.seata.nacos.feign.modules.entity.OrderItemEntity; import com.loit.shardingsphere.seata.nacos.feign.modules.entity.OrderItemEntity;
import java.util.List;
public interface IOrderItemService extends IService<OrderItemEntity> { public interface IOrderItemService extends IService<OrderItemEntity> {
void insertOrderItem(OrderItemEntity orderItemEntity); void insertOrderItem(OrderItemEntity orderItemEntity);
List<OrderItemEntity> findPage(Long orderId, Long pageNum, Long pageSize);
} }
...@@ -7,6 +7,7 @@ import java.util.List; ...@@ -7,6 +7,7 @@ import java.util.List;
public interface IOrderService extends IService<OrderEntity> { public interface IOrderService extends IService<OrderEntity> {
void insertOrder(OrderEntity orderEntity); void insertOrder(OrderEntity orderEntity);
......
package com.loit.shardingsphere.seata.nacos.feign.modules.service.impl; package com.loit.shardingsphere.seata.nacos.feign.modules.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.loit.shardingsphere.seata.nacos.feign.modules.entity.OrderItemEntity; import com.loit.shardingsphere.seata.nacos.feign.modules.entity.OrderItemEntity;
import com.loit.shardingsphere.seata.nacos.feign.modules.mapper.OrderItemMapper; import com.loit.shardingsphere.seata.nacos.feign.modules.mapper.OrderItemMapper;
import com.loit.shardingsphere.seata.nacos.feign.modules.service.IOrderItemService; import com.loit.shardingsphere.seata.nacos.feign.modules.service.IOrderItemService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service @Service("orderItemService")
public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItemEntity> implements IOrderItemService { public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItemEntity> implements IOrderItemService {
@Override @Override
@Transactional
public void insertOrderItem(OrderItemEntity orderItemEntity) { public void insertOrderItem(OrderItemEntity orderItemEntity) {
baseMapper.insert(orderItemEntity); baseMapper.insert(orderItemEntity);
} }
@Override
public List<OrderItemEntity> findPage(Long orderId, Long pageNum, Long pageSize) {
QueryWrapper<OrderItemEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("order_id", orderId);
queryWrapper.orderByAsc("id");
Page<OrderItemEntity> page = new Page<>(pageNum, pageSize);
//分页数据
IPage<OrderItemEntity> pageInfo = this.page(page, queryWrapper);
return pageInfo.getRecords();
}
} }
...@@ -3,29 +3,54 @@ package com.loit.shardingsphere.seata.nacos.feign.modules.service.impl; ...@@ -3,29 +3,54 @@ package com.loit.shardingsphere.seata.nacos.feign.modules.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.loit.shardingsphere.seata.nacos.feign.modules.entity.OrderEntity; import com.loit.shardingsphere.seata.nacos.feign.modules.entity.OrderEntity;
import com.loit.shardingsphere.seata.nacos.feign.modules.entity.OrderItemEntity;
import com.loit.shardingsphere.seata.nacos.feign.modules.mapper.OrderMapper; import com.loit.shardingsphere.seata.nacos.feign.modules.mapper.OrderMapper;
import com.loit.shardingsphere.seata.nacos.feign.modules.service.IOrderItemService;
import com.loit.shardingsphere.seata.nacos.feign.modules.service.IOrderService; import com.loit.shardingsphere.seata.nacos.feign.modules.service.IOrderService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
@Service("orderService") @Service("orderService")
public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderEntity> implements IOrderService { public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderEntity> implements IOrderService {
@Resource(name = "orderItemService")
private IOrderItemService orderItemService;
/**
* 测试插入 orderItem
*/
@Override @Override
@Transactional
public void insertOrder(OrderEntity orderEntity) { public void insertOrder(OrderEntity orderEntity) {
baseMapper.insert(orderEntity); baseMapper.insert(orderEntity);
Long orderId = orderEntity.getOrderId();
for (int i = 0; i < 31; i++) {
OrderItemEntity orderItem = new OrderItemEntity();
orderItem.setOrderId(orderId);
orderItem.setOrderItemId(Long.valueOf(i));
orderItem.setStatus(orderEntity.getStatus());
orderItem.setUserId(orderEntity.getUserId());
orderItemService.insertOrderItem(orderItem);
}
} }
@Override @Override
public List<OrderEntity> findPage(Long pageNum, Long pageSize) { public List<OrderEntity> findPage(Long pageNum, Long pageSize) {
QueryWrapper<OrderEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<OrderEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByAsc("id"); queryWrapper.orderByAsc("id");
Page<OrderEntity> page = new Page<>(pageNum, pageSize); Page<OrderEntity> page = new Page<>(pageNum, pageSize);
//分页数据 //分页数据
IPage<OrderEntity> pageInfo = this.page(page, queryWrapper); IPage<OrderEntity> pageInfo = this.page(page, queryWrapper);
return pageInfo.getRecords(); return pageInfo.getRecords();
......
...@@ -28,7 +28,7 @@ spring: ...@@ -28,7 +28,7 @@ spring:
jdbc-url: jdbc:mysql://39.98.202.173:3306/demo_ds?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC jdbc-url: jdbc:mysql://39.98.202.173:3306/demo_ds?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
url: jdbc:mysql://39.98.202.173:3306/demo_ds?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC url: jdbc:mysql://39.98.202.173:3306/demo_ds?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
filters: stat,wall,log4j filters: stat,wall,log4j
maxActive: 20 maxActive: 40
initialSize: 1 initialSize: 1
maxWait: 60000 maxWait: 60000
minIdle: 1 minIdle: 1
...@@ -39,7 +39,7 @@ spring: ...@@ -39,7 +39,7 @@ spring:
testOnBorrow: false testOnBorrow: false
testOnReturn: false testOnReturn: false
poolPreparedStatements: true poolPreparedStatements: true
maxOpenPreparedStatements: 20 maxOpenPreparedStatements: 40
connection-properties: druid.stat.merggSql=ture;druid.stat.slowSqlMillis=5000 connection-properties: druid.stat.merggSql=ture;druid.stat.slowSqlMillis=5000
sharding: sharding:
tables: tables:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论