## 27.11 Performance Schema General Table Characteristics

 The name of the `performance_schema` database is lowercase, as are the names of tables within it. Queries should specify the names in lowercase.

[]()[]()

 Many tables in the `performance_schema` database are read only and cannot be modified:

```
mysql> TRUNCATE TABLE performance_schema.setup_instruments;
ERROR 1683 (HY000): Invalid performance_schema usage.
```

 Some of the setup tables have columns that can be modified to affect Performance Schema operation; some also permit rows to be inserted or deleted. Truncation is permitted to clear collected events, so [`TRUNCATE TABLE`](truncate-table.html) can be used on tables containing those kinds of information, such as tables named with a prefix of `events_waits_`.

 Summary tables can be truncated with [`TRUNCATE TABLE`](truncate-table.html). Generally, the effect is to reset the summary columns to 0 or `NULL`, not to remove rows. This enables you to clear collected values and restart aggregation. That might be useful, for example, after you have made a runtime configuration change. Exceptions to this truncation behavior are noted in individual summary table sections.

 Privileges are as for other databases and tables:

* To retrieve from `performance_schema` tables, you must have the [`SELECT`](privileges-provided.html#priv_select) privilege.

* To change those columns that can be modified, you must have the [`UPDATE`](privileges-provided.html#priv_update) privilege.

* To truncate tables that can be truncated, you must have the [`DROP`](privileges-provided.html#priv_drop) privilege.

 Because only a limited set of privileges apply to Performance Schema tables, attempts to use `GRANT ALL` as shorthand for granting privileges at the database or table leval fail with an error:

```
mysql> GRANT ALL ON performance_schema.*
       TO 'u1'@'localhost';
ERROR 1044 (42000): Access denied for user 'root'@'localhost'
to database 'performance_schema'
mysql> GRANT ALL ON performance_schema.setup_instruments
       TO 'u2'@'localhost';
ERROR 1044 (42000): Access denied for user 'root'@'localhost'
to database 'performance_schema'
```

 Instead, grant exactly the desired privileges:

```
mysql> GRANT SELECT ON performance_schema.*
       TO 'u1'@'localhost';
Query OK, 0 rows affected (0.03 sec)

mysql> GRANT SELECT, UPDATE ON performance_schema.setup_instruments
       TO 'u2'@'localhost';
Query OK, 0 rows affected (0.02 sec)
```

