Database Operations
Essential commands for managing databases in ClickHouse Cloud.
Database Management
List Databases
-- Show all databases
SHOW DATABASES;
-- Get detailed database information
SELECT name,
engine,
data_path,
metadata_path,
uuid
FROM system.databases;
Create Database
-- Basic database creation
CREATE DATABASE IF NOT EXISTS database_name;
-- Create database with specific engine
CREATE DATABASE IF NOT EXISTS database_name
ENGINE = Atomic;
Drop Database
Switch Database
Database Information
Database Size
-- Get size of all databases
SELECT
database,
formatReadableSize(sum(bytes_on_disk)) AS disk_size,
count() AS total_tables,
sum(rows) AS total_rows
FROM system.parts
GROUP BY database
ORDER BY sum(bytes_on_disk) DESC;
Database Metadata
-- View database engines
SELECT
name AS database_name,
engine,
engine_full,
uuid
FROM system.databases
ORDER BY name;
Database Permissions
-- Show database privileges
SHOW GRANTS ON database_name;
-- Check current user's access to databases
SELECT
database,
count() AS tables_count,
any(engine) AS db_engine
FROM system.tables
WHERE has_access_to_database(database)
GROUP BY database;
Monitoring and Maintenance
Database Activity
-- Monitor database operations
SELECT
database,
event_type,
event_date,
event_time,
query
FROM system.query_log
WHERE type >= 2
AND event_date >= today() - 1
ORDER BY event_time DESC
LIMIT 10;
Database Performance
-- Check database metrics
SELECT
database,
table,
formatReadableSize(sum(bytes)) AS memory_usage,
sum(rows) AS total_rows,
count() AS part_count
FROM system.parts
GROUP BY database, table
ORDER BY sum(bytes) DESC;
Best Practices
- Use meaningful database names
- Implement proper access controls
- Regular monitoring of database sizes
- Periodic cleanup of unused databases
Common Tasks
Database Backup
-- Create backup of database structure
SELECT
concat('CREATE DATABASE IF NOT EXISTS ', name, ' ENGINE = ', engine_full, ';') AS create_statement
FROM system.databases
WHERE name = 'database_name';
Database Replication Status
-- Check replication status for database tables
SELECT
database,
table,
is_leader,
total_replicas,
active_replicas
FROM system.replicas
WHERE database = 'database_name'
ORDER BY table;