答案:
MySQL 是一个开源的关系型数据库管理系统(RDBMS),使用SQL管理数据,广泛用于Web应用,因其性能高、易用和可扩展性强而受欢迎。
答案:
MySQL支持多种存储引擎:
示例:电商用InnoDB保证事务一致性,分析系统用MyISAM提升查询速度。
答案:
示例:
users表的user_id为主键,orders表的user_id为外键,引用users.user_id。
答案:
ACID是数据库事务的四个特性:
答案:
MySQL支持以下JOIN类型:
示例:
SELECT users.name, orders.order_id
FROM users
LEFT JOIN orders ON users.user_id = orders.user_id;
答案:
答案:
索引是提高查询性能的数据结构(如B+树),通过减少扫描的数据量加速查询。
CREATE INDEX idx_email ON users(email);
答案:
MySQL支持以下索引类型:
CREATE UNIQUE INDEX idx_name_email ON users(name, email);
答案:
事务是一组原子操作,要么全成功,要么全失败。
MySQL通过InnoDB支持事务,使用以下命令:
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
COMMIT;
答案:
MySQL支持四种隔离级别(InnoDB默认Repeatable Read):
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
答案:
死锁是多个事务相互等待对方释放资源,导致无法继续执行。
避免方法:
Answer:
触发器是与表关联的特殊存储过程,在特定事件(如INSERT、UPDATE、DELETE)时自动执行。
创建示例:
CREATE TRIGGER after_user_insert
AFTER INSERT ON users
FOR EACH ROW
INSERT INTO logs (user_id, action) VALUES (NEW.user_id, 'INSERT');
答案:
视图是基于查询的虚拟表,存储查询逻辑,不存储数据。
用途:
CREATE VIEW user_orders AS
SELECT users.name, orders.order_id
FROM users JOIN orders ON users.user_id = orders.user_id;
答案:
EXPLAIN分析查询执行计划,显示MySQL如何执行查询,包括使用的索引、扫描行数等。
示例:
EXPLAIN SELECT * FROM users WHERE email = '[email protected]';
输出包括type(访问类型,如ref)、key(使用的索引)等。
答案:
慢查询是执行时间超过阈值的查询(由long_query_time定义)。
优化方法:
答案:
使用LIMIT和OFFSET实现分页。
示例:显示第2页,每页10条记录:
SELECT * FROM users ORDER BY user_id LIMIT 10 OFFSET 10;
注意:大偏移量可能导致性能下降,可用主键过滤优化。
答案:
存储过程是一组预编译的SQL语句,存储在数据库中,可重复调用。
优点:减少网络传输,提高性能,封装逻辑。
示例:
DELIMITER //
CREATE PROCEDURE GetUser(IN uid INT)
BEGIN
SELECT * FROM users WHERE user_id = uid;
END //
DELIMITER ;
CALL GetUser(1);
答案:
CREATE TABLE orders (
order_id INT,
order_date DATE
) PARTITION BY RANGE (YEAR(order_date)) (
PARTITION p0 VALUES LESS THAN (2023),
PARTITION p1 VALUES LESS THAN (2024)
);
答案:
mysqldump -u root -p mydb > backup.sql
mysql -u root -p mydb < backup.sql
注意:定期备份,验证备份文件完整性。
答案:
CREATE INDEX idx_date ON orders(order_date);