<p>I have a Java SOAP data service which sits on top of a Sybase database which, for reasons out of my control, has unreliable performance. The database is part of a vendor package which has been modified by an internal team and most of the issues are caused by slow response times at certain times of the day. </p>

<p>The SOAP service provides data to a calculation grid and when I request data, I need the response time to be both fast and <em>consistent</em>.  The service provides basic CRUD functionality, but the ratio of reads to writes is approximately 100:1.  </p>

<p>What is the best strategy to isolate myself from the database's unreliable performance and ensure that the SOAP service is fast and reliable?</p>

I have seen this issue a few times, normally with a vendor database.
If this is on Windows, you could create a Windows service as an intermediary between the SOAP service and the database. Then put a message queue (either MSMQ or a JMS implementation such as MQ Series) between the SOAP service and Windows service for asynchronous communications. In this way the database performance issues will no longer affect the SOAP service. This solution does, however, come at the cost of increased complexity.
Note that a .NET web service can be called by, and respond asynchronously to, its clients. I'm not sure if that's possible with a Java SOAP service.
If this is on some flavour of Unix, I assume it has similar functionality to a Windows service - maybe a daemon.