Thanks for the inputs Joe..
Yes you are right,this is a one time activity and whatever configuration changes we make can be reverted to the default values once the consolidation is complete.
The source and destination databases are in two different data servers.
Can you think of any other configuration changes which might be needed?
Main Topics
Browse All Topics





by: Joe_WoodhousePosted on 2009-10-08 at 14:34:53ID: 25530361
Is this something you're running just once? I'm asking because in this scenario you won't be re-reading data, which is basically the main benefit of caching.
You can still benefit from sequential large I/Os (ie large buffer pools) and you can still benefit from speculative prefetching (you asked to read these pages, so we guess that you'll want those pages next and try to prefetch them before you even ask - ASE calls this asynchronous prefetch or APF)... IF your data is relatively unfragmented.
Adding a 16Kb pool
This might be helpful, we won't know since we have no idea of how fragmented your underlying data is. Fragmentation makes sequential reads less useful. If you create a 16Kb pool (worth trying!), remove all of your 8Kb pool as ASE will only ever use the largest and the smallest pools for data without trying anything in between. (It can use other sizes for logging.) Size it to be one third of the cache in total (as a starting place) ie make it about 650Mb.
Adding a log cache
I'm not as convinced this will be helpful - you don't seem to have much memory there. Only 2Gb for default data cache seems awfully low these days - I can do more than that on my laptop. :) Named caches reduce the amount of cache any one object can use and when you don't have much to go around that may be a bad thing. That said... a log cache can usually be pretty small... in your scenario even 25Mb would be large enough.
I don't think you'll likely see much gain from this though. There are two motivations for wanting named caches - to reduce spinlock contention in accessing the caches in the first place, and to reduce contention within the caches (to stop one object flushing another out of cache). In your scenario I can't imagine you'll have many concurrent users so we won't see spinlock contention, and you won't be re-reading data pages or rewriting log pages so as soon as you've finished with any page, you won't reuse it, so who cares if it gets thrown out of cache?
I think you might gain more from setting the log I/O size high. A mass move of data like that will generate a lot of transaction logs, so using a larger I/O to write them to data will help. Look into the procedure "sp_logiosize". I suggest (once you create a 16Kb pool) you set it to "16" (note it must be a string and hence be in quotes). Don't forget to set it back to the default "4" when you're done!
Other thoughts
Are your source and data in the same ASE? If so then unless you're doing some ETL along the way, you gain nothing and lose much by doing a BCP out and then in again. It would be faster to just do an insert... select.