1) You do not want to use a database server as a game server. Packing all the services on a single machine is okay for development and testing environments, but any proper deployment needs to factor database services into different hosts from game services.
2) You do not want to use a database as your main IPC or state distribution mechanism. It should not be used to communicate player movement updates, or player chat, or anything like that. Databases are used when you absolutely need transactional integrity and durability. What are you doing 3 times a second to 4,000 users that needs durability and transactional integrity?
Well I'm using the database for everything which I need present after restarting the server. That includes player specific data(level, experience, current hp. etc.), item specific data(socket history, durability, etc.) and other similar topics. There're certain items which are used upon using a skill and I update item stacks on database as soon as they're used in-game so that's where the 3 queries per second idea came from. I update things like current exp, hp, position, quickbelt, etc. on certain intervals or when the player disconnects.
As I said I was using Oracle previously but was only using very simple features of it. Was hoping to find a more lightweight solution with similar performance/scalability. Will try the struct approach(could build a separate server for this to solve the #1 issue hplus presented but I'm not sure if it's needed in my case). Thanks for the answers.