I have an existing system ( on PHP, MYSQL on AWS EC2 & RDS accordingly). Current statistics for the MySQL (InnoDB) as database is 600 GB in total size (from the phymyadmin) and containing almost 150 tables which my program requires. Out of that two tables ( Order, Order_items ) containing more than 200GBs each.
While the database is growing, we are finding problems in few things. 1. Updates in any database schema to get for new feature updates takes too much amount of time. 2. Is it good to remain in the same kind of data structure for longer run, as expecting much larger data (getting in TB) as we are growing?
To solve problem no 1 and deal with problem no. 2, we are trying to find out solution hence posting a question here.
One of the possible ways we are thinking is as below.
We are thinking to separate Order, Order_items ( and such bulkier tables ) to store per User base Database rather than current structure of everything in a single database. So for every user, Order, Order_items will store in separate database and rest other tables in common databases. (one master database, and x Customer database for such entries.) hence data will be segregated.
Pitfalls in this mentioned as - Directory structure getting larger for storing per user wise DB.
Getting references which says it's not a good option when being smaller database. [ http://datacharmer.blogspot.com/2009/03/normalization-and-smoking.html ] [ max limit of databases that can be created in mysql? ] [https://forums.mysql.com/read.php?20,74692,74705#msg-74705]
Not able to get clear view as what to do when having a larger data in a one table.
Would it be a better option to separate out tables per user or any other options available to cater long term data growth ( Point no.1 & 2 mentioned above.)?