更新
如果行数减少,等待时间也会减少。如果启用了服务器端处理,为什么会发生这种情况?我有 90000 行,但我希望插入超过 1 亿行。这将如何改变软件性能?蒲公英数据表能够应付吗?
问题
我在我的 spring mvc 应用程序上运行蒲公英数据表 1.1.0 版。Web 容器是 tomcat 8。我使用的是 java 8。
我有两个主要问题
- 数据表非常慢。我正在显示从数据库中获得 90000 行的整个表,当我按下下一页按钮时,刷新数据需要 1.5 秒。服务器端处理和分页也被启用。
chrome 控制台显示以下内容:
根据谷歌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
对我来说,这一点都不坏
- 当我打开表格所在的页面时,该页面仅显示没有主题且没有数据的表格。我必须按刷新页面按钮才能查看数据和引导主题。
请参阅下面的一些代码以获取您的信息
控制器
@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_
你能看出这里有什么不对吗?
谢谢您的帮助