Not sure if this is still being looked at or anything's been done, but I thought I'd mention this because it might bring some things to light. 
 
I took code that was based around 2010 or so. (Note that was before the _character table changed to character_data).  I added custom changes from that to code to newer code I grabbed from your GIT at around 8-2017 to use on our server.  I didn't notice the difference right away because most of my testing involved a few toons here and there. 
 
Since I noticed the problem with logging in more than 24 toons, I adjusted things in my own code, and started updating my code by incorporating each change to your GIT..  It is now up to date with 9-2018, at which time I noticed one change that really helped, but it was buried in a merge. 
 
I thought that was all there was to it..  But since then, I logged 48 toons in one zone on my server..   
All seemed fine and there was no lag..  Until I buffed all my toons.   This added to the lag because of added work for database.SaveBuffs(this); function call. 
 
Now, I have begun comparing the code difference between the old version (before the database split) and the new. 
 
In the old version..  The only database call in Client::Save(uint8 iCommitNow) function was using the DBAsyncWork class unless iCommitNow was > 0.  That particular class actually added it's own thread to work on a queue of database queries without slowing down the main thred.   
 
I don't see that thread anywhere in the new code.  Maybe I'm mistaken, but I think it would maybe help. 
Don't know for sure, but just a thought. 
		
	
		
		
		
		
		
		
		
		
		
	
		
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 |