A sandbox is an isolated environment for running an application, where it cannot affect anything outside of that environment. Throughout this book, I’ve been encouraging you to “try” various configuration options and changes to databases. But some such “tries” can slow down the application or even crash the application or the database. This is not what most users want. Instead, you can use a sandbox to isolate the system you’re testing in its own environment, where anything you do wrong doesn’t matter.
In the MySQL world, Giuseppe Maxia introduced this term by creating a tool named the MySQL Sandbox. I will describe the MySQL Sandbox and how it can be helpful a bit later, but here I want to briefly show some variants of sandboxes.
The simplest way to safely test queries on a table is to make a copy, so that the original table is secured and can be used by the application as usual while you are be experimenting with the copy. You also won’t have to worry about reverting changes that you inadvertently make:
CREATE TABLE test_problem LIKE problem; INSERT INTO test_problem SELECT * FROM problem;
One good thing with this solution is that you can copy just part of
the data, using
WHERE to limit the
number of rows. For example, suppose you are testing a complex query and
are sure that it is correctly executing one of its
WHERE clauses. You can limit your test table to
items meeting that condition when you create it, and then have a smaller
table on which to test the query: