1

更新

如果行数减少,等待时间也会减少。如果启用了服务器端处理,为什么会发生这种情况?我有 90000 行,但我希望插入超过 1 亿行。这将如何改变软件性能?蒲公英数据表能够应付吗?

问题

我在我的 spring mvc 应用程序上运行蒲公英数据表 1.1.0 版。Web 容器是 tomcat 8。我使用的是 java 8。

我有两个主要问题

  1. 数据表非常慢。我正在显示从数据库中获得 90000 行的整个表,当我按下下一页按钮时,刷新数据需要 1.5 秒。服务器端处理和分页也被启用。

chrome 控制台显示以下内容:

TTFB

根据谷歌TTFB是:

等待初始响应所花费的时间,也称为 Time To First Byte。除了等待服务器传递响应所花费的时间之外,该时间还捕获到服务器的往返延迟。

对 mysql 数据库所在的服务器的 ping 显示如下:

icmp_seq=1 ttl=64 time=0.206 ms
icmp_seq=2 ttl=64 time=0.232 ms
icmp_seq=3 ttl=64 time=0.188 ms
icmp_seq=4 ttl=64 time=0.192 ms

对我来说,这一点都不坏

  1. 当我打开表格所在的页面时,该页面仅显示没有主题且没有数据的表格。我必须按刷新页面按钮才能查看数据和引导主题。

请参阅下面的一些代码以获取您的信息

控制器

@RequestMapping(value = "/results")
    public @ResponseBody DatatablesResponse<Results> findAllForDataTables(HttpServletRequest request) {
      DatatablesCriterias criterias = DatatablesCriterias.getFromRequest(request);
      DataSet<Results> results = this.resultsServiceimpl.findResultsWithDatatablesCriterias(criterias);

      return DatatablesResponse.build(results, criterias);
    }

页面.jsp

<datatables:table id="myTableId" url="/results" serverSide="true" pageable="true" theme="bootstrap2" cssClass="table table-striped" >
    <datatables:column title="ID" property="id" />
    <datatables:column title="Start Date" />
    <datatables:column title="Stop Date"/>
</datatables:table>

重要提示:数据库表有 31 列和 90000 行,其中大部分为空。然而,数据表仅显示前三列。这可能是问题吗?

按下“下一步”按钮时的休眠查询(3 个查询)

Hibernate: select result0_.id as id1_0_, result0_.start_date as start_date2_0_, result0_.stop_date as as stop_date3_0_,, ....other fields.... from results result0_ order by result0_.id ASC limit ?, ?

Hibernate: select count(result0_.id) as col_0_0_ from results result0_

Hibernate: select result0_.id as id1_0_, result0_.start_date as start_date2_0_, result0_.stop_date as as stop_date3_0_,, ....other fields.... from results result0_

你能看出这里有什么不对吗?

谢谢您的帮助

4

0 回答 0