运维
未读
Docker 安装MySQL
这是一篇关于在Docker中部署MySQL的文章,介绍了如何查找、拉取并配置MySQL镜像,并通过挂载方式持久化数据和配置文件。文章首先讲解了如何拉取MySQL镜像、查看镜像并获取配置文件的位置,随后详细描述了如何在宿主机上创建挂载路径并复制MySQL配置文件。接着,作者展示了如何使用命令启动MySQL容器并配置容器的重启策略。文中还说明了如何进入MySQL容器设置用户信息、创建新用户、授予权限以及解决时区问题。最后,文章提供了启动、停止、重启容器以及设置容器开机自启动的命令。
数据库
未读
MySQL 死锁和解除锁
这是一篇解除死锁状态的文章,介绍了两种方法来解决MySQL中的死锁问题。第一种方法是通过查询锁表和进程列表,找到并杀死死锁进程。第二种方法是查看锁定的事务,找到相关的进程ID并杀死它。文章还提供了终极方法,通过查询执行时间较长的用户线程并终止进程来解决问题。除此之外,还介绍了其他命令,如查看当前事务、锁定事务和等待锁的事务,以帮助进一步诊断和解决死锁问题。
数据库
未读
MySQL 常见操作函
这是一篇关于MySQL函数的文章,主要介绍了数学函数、聚合函数、字符串函数、日期和时间函数、加密函数、控制流函数、格式化函数、类型转化函数以及系统信息函数。文章列举了常见的数学函数如ABS()、BIN()、ROUND()等,聚合函数如AVG()、COUNT()、SUM()等,以及字符串函数如CONCAT()、LCASE()、TRIM()等。还包括日期时间函数如CURDATE()、DATE_ADD()、YEAR()等,介绍了加密函数如AES_ENCRYPT()、MD5()、SHA(),以及控制流函数如IFNULL()、CASE等。文章还讨论了格式化函数、类型转换函数和系统信息函数如DATABASE()、VERSION()、USER()等。每类函数都提供了相关的示例,帮助读者更好地理解和使用这些函数。
数据库
未读
MySQL 高性能优化规范建议
这篇文章总结了数据库命名、设计、SQL开发和操作规范。命名规则要求数据库对象名使用小写字母和下划线,不得使用保留关键字,并保持简洁明了。数据库设计方面强调表使用InnoDB存储引擎,统一字符集为UTF8,表和字段需添加注释,控制表数据量,避免过多分区,做到冷热数据分离等。字段设计规范包括选择合适的数据类型,避免使用TEXT、BLOB等大数据类型,确保字段为NOT NULL,金额类使用decimal等。索引设计要求合理控制索引数量和顺序,避免冗余索引,优化查询性能。SQL开发规范强调使用预编译语句、避免隐式转换、充分利用索引、避免子查询和多表JOIN等。操作规范中提到批量写操作要分批进行,避免大事务,修改大表结构时使用pt-online-schema-change工具。
数据库
未读
MySQL 三大日志
这是一篇关于MySQL日志机制的文章,介绍了MySQL中不同日志的作用和机制。Undo log(回滚日志)记录事务前的数据状态,保证原子性和MVCC机制,主要用于事务回滚;Redo log(重做日志)记录事务后的数据状态,确保持久性,防止数据丢失,并通过不同刷盘策略控制数据写入磁盘的时机;Binlog(归档日志)记录所有数据库的更新操作,主要用于数据恢复和主从复制,且其刷盘策略和Redo log类似。文章还介绍了不同日志的区别、作用以及如何查看和配置相关日志。
数据库
未读
MySQL Explain执行计划
这篇文章介绍了MySQL中的EXPLAIN命令,它用于显示MySQL如何使用索引处理SELECT语句和连接表。通过EXPLAIN提供的信息,用户可以优化查询语句和选择更合适的索引。文章列出了EXPLAIN命令的使用方法,以及SELECT_TYPE字段、TYPE字段和EXTRA列的解释。SELECT_TYPE字段包括不同查询类型,如UNION、DEPENDENT UNION、SUBQUERY、DERIVED、SIMPLE、PRIMARY和UNION RESULT。TYPE字段和EXTRA列则提供有关查询处理方式的更多细节,帮助优化查询性能。
数据库
未读
MySQL 多版本并发控制
这是一篇关于MVCC(多版本并发控制)的文章,介绍了其在数据库中的应用及原理。MVCC通过维护数据的多个版本来避免写操作阻塞读操作,从而实现高效的并发访问。文章详细解释了Undo Log和Redo Log的作用,分别用于回滚操作和恢复提交后的数据。MVCC通过快照读和当前读来区分数据读取方式,前者避免加锁以提高并发性能,后者通过加锁确保读取的是最新数据。文章进一步介绍了ReadView的概念,它用于在快照读时判断数据版本的可见性,并提供了ReadView的生成规则和查询流程。总结指出,在不同隔离级别下,MVCC的行为会有所不同,Read Committed可能会导致不可重复读,而Repeatable Read则能避免此问题。
数据库
未读
MySQL 事务隔离级别
这篇文章介绍了事务的基本概念及其隔离级别,事务是指一组逻辑操作,要么全部成功,要么完全失败。事务的四大特性是原子性、一致性、隔离性和持久性。文章讨论了并发事务可能带来的问题,如脏读、丢失修改、不可重复读和幻读,并解释了这些问题的含义及区别。接着,文章详细介绍了SQL标准定义的四个事务隔离级别:READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ和SERIALIZABLE,并阐述了它们如何影响脏读、不可重复读和幻读的发生。在MySQL InnoDB存储引擎中,默认的隔离级别是REPEATABLE-READ,这已能避免幻读。文章还提供了实际的操作示例,展示了如何设置事务隔离级别以及并发控制语句的使用。
数据库
未读
MySQL SQL的执行过程
这篇文章分析了 MySQL 的基本架构和 SQL 语句的执行流程。首先,介绍了 MySQL 的主要架构组件,包括 Server 层(连接器、查询缓存、分析器、优化器、执行器等)和存储引擎层(如 InnoDB、MyISAM)。接着,详细说明了查询语句和更新语句的执行流程。查询语句会先进行权限校验,查询缓存,经过分析器和优化器处理后由执行器调用存储引擎执行。更新语句则在执行时会涉及日志模块(如 binlog 和 redo log)以确保数据一致性,并通过两阶段提交机制实现崩溃恢复。总的来说,MySQL 通过这一系列流程保证了高效的数据操作和事务一致性。
数据库
未读
MySQL 基础
这是一篇关于MySQL数据库的文章,主要介绍了MySQL的基本概念、数据库管理系统(DBMS)的功能及其分类,以及如何使用SQL进行数据库操作。文章首先说明了数据库的概念,并区分了关系型与非关系型数据库。接着,详细介绍了常见的数据库系统如MySQL、Oracle、SQL Server等,并对开源和闭源数据库进行了比较。此外,文章对SQL的基本操作进行了详细说明,包括如何连接MySQL、创建和管理数据库和表、执行增删改查等基本操作。同时,文章还解释了主键、外键、约束、索引等概念,重点讨论了事务的处理和SQL的分类(DDL、DML、DCL、TCL)。文章最后通过对视图、约束、索引的使用,进一步阐述了数据库优化的相关内容。
数据库
未读
MySQL 查询优化相关
这是一篇关于如何根治MySQL慢查询的文章。文章详细介绍了导致MySQL慢查询的12个常见原因,并提供了相应的解决方法。首先,指出了SQL没有加索引或者索引未生效的问题,列出了多个导致索引失效的场景,如隐式类型转换、使用OR条件、LIKE通配符开头、联合索引不满足最左匹配原则等。接着,讨论了LIMIT深分页带来的性能问题,建议使用标签记录法或延迟关联法进行优化。对于单表数据量过大的情况,提出了分库分表的解决方案。文章还涉及了JOIN和子查询过多、IN元素过多等导致查询慢的情形,并给出了相应的优化建议。此外,文章还讨论了数据库刷脏页、ORDER BY文件排序、以及查询被锁等导致慢查询的其他原因,并提供了解决策略,如优化索引、调整配置、减少锁争用等。