# 转信创数据库后很多页面几十秒到一分钟才能打开

# 背景

正在给客户做A8升级转A8N信创,由非信创数据库迁移成PolarDB信创数据库,迁移后的A8N环境打开协同、公文各种页面都偏慢,尤其是公文列表页面要一分钟才能出数据。

# 分析过程

这种慢的问题,可以通过系统管理员-系统监控-底部ThreadDump抓取当前线程执行情况,通过Thread Dump可以确认慢的问题是:数据库查询。

"http-nio-0.0.0.0-8088-exec-43" Id=173 in RUNNABLE (running in native)  2025-11-26 09:38:06 	 / 37 seconds
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
    at java.net.SocketInputStream.read(SocketInputStream.java:171)
    at java.net.SocketInputStream.read(SocketInputStream.java:141)
    at com.mysql.cj.protocol.ReadAheadInputStream.fill(ReadAheadInputStream.java:107)
    at com.mysql.cj.protocol.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:150)
    at com.mysql.cj.protocol.ReadAheadInputStream.read(ReadAheadInputStream.java:180)
    at java.io.FilterInputStream.read(FilterInputStream.java:133)
    at com.mysql.cj.protocol.FullReadInputStream.readFully(FullReadInputStream.java:64)
    at com.mysql.cj.protocol.a.SimplePacketReader.readHeaderLocal(SimplePacketReader.java:81)
    at com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:63)
    at com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:45)
    at com.mysql.cj.protocol.a.TimeTrackingPacketReader.readHeader(TimeTrackingPacketReader.java:52)
    at com.mysql.cj.protocol.a.TimeTrackingPacketReader.readHeader(TimeTrackingPacketReader.java:41)
    at com.mysql.cj.protocol.a.MultiPacketReader.readHeader(MultiPacketReader.java:54)
    at com.mysql.cj.protocol.a.MultiPacketReader.readHeader(MultiPacketReader.java:44)
    at com.mysql.cj.protocol.a.NativeProtocol.readMessage(NativeProtocol.java:576)
    at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:762)
    at com.mysql.cj.protocol.a.NativeProtocol.sendCommand(NativeProtocol.java:701)
    at com.mysql.cj.protocol.a.NativeProtocol.sendQueryPacket(NativeProtocol.java:1052)
    at com.mysql.cj.NativeSession.execSQL(NativeSession.java:657)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:893)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:972)
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3241)
    at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery(FilterEventAdapter.java:459)
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3238)
    at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery(FilterEventAdapter.java:459)
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3238)
    at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.executeQuery(PreparedStatementProxyImpl.java:175)
    at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeQuery(DruidPooledPreparedStatement.java:213)
    at com.seeyon.ctp.ddn.proxy.DdnPreparedStatement.executeQuery(DdnPreparedStatement.java:47)
    at com.seeyon.ctp.ddn.proxy.Bool2IntPreparedStatement.executeQuery(Bool2IntPreparedStatement.java:30)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:57)
    at org.hibernate.loader.Loader.getResultSet(Loader.java:2297)
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2050)
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2012)
    at org.hibernate.loader.Loader.doQuery(Loader.java:948)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:349)
    at org.hibernate.loader.Loader.doList(Loader.java:2843)
    at org.hibernate.loader.Loader.doList(Loader.java:2825)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2657)
    at org.hibernate.loader.Loader.list(Loader.java:2652)
    at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:338)
    at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:2141)
    at org.hibernate.internal.AbstractSharedSessionContract.list(AbstractSharedSessionContract.java:1169)
    at org.hibernate.query.internal.NativeQueryImpl.doList(NativeQueryImpl.java:176)
    at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1604)
    at com.seeyon.ctp.common.affair.dao.AffairDaoImpl$2.doInHibernate(AffairDaoImpl.java:3163)
    at org.springframework.orm.hibernate3.SmartHibernateCallback.doInHibernate(SmartHibernateCallback.java:23)
    at org.springframework.orm.hibernate3.SmartHibernateTemplate.doExecute(SmartHibernateTemplate.java:104)
    at org.springframework.orm.hibernate3.CTPHibernateTemplate.execute(CTPHibernateTemplate.java:306)
    at com.seeyon.ctp.common.dao.HibernateTemplate.execute(HibernateTemplate.java:89)
    at com.seeyon.ctp.common.affair.dao.AffairDaoImpl.getDeduplicationAffairList(AffairDaoImpl.java:3140)
    at com.seeyon.ctp.common.affair.dao.AffairDaoImpl$$FastClassBySpringCGLIB$$bbe51b40.invoke()

1764557651413.png

# 解决方案

查看项目上的数据库发现:项目是由非信创数据库迁移到信创的数据库MySQL模式,迁移数据库后主键和索引都没有迁移,导致系统缓慢。

解决方案:联系做迁移转库的厂商解决,补齐主键和索引后,问题修复。

编撰人:het