MySQL系列(10): MySQL InnoDB 锁机制

  是计算机协调多个进程或并发访问某一资源的机制,数据也是供许多用户共享的资源。Java有机制,数据库也有机制。数据库锁定机制简单来说,是为了保证在并发情况下数据的一致性、有效性。  

  MySQL锁机制是由存储引擎提供的,InnoDB存储引擎支持行级锁表级锁,默认级别行级锁(row-Level locking); MyISAMMEMORY存储引擎采用的是表级锁(table-level locking),BDB存储引擎采用的是页面锁(page-level locking),也支持表级锁BDB已成为历史。

  InnoDBMyISAM 最大的不同有两点:一是支持事务,二是采用行级锁。

  MySQL 5.7 官方文档:14.7.1 InnoDB Locking14.7.3 Locks Set by Different SQL Statements in InnoDB14.7.5 Deadlocks in InnoDB

阅读更多

MySQL系列(9): MySQL InnoDB存储引擎之事务模型

  事务(Transaction )是InnoDB存储引擎一个很重要并且区别于其它存储引擎的特性。 使用了 Innodb 存储引擎的数据库或表才支持事务。

  **事务:**指作为单个逻辑工作单元执行的一组操作,这组操作的各个单元要么全部成功,要么全部失败。
  **事务处理:**通过将一组相关操作组合为一个要么全部成功,要么全部失败的单元,保证数据一致性。

阅读更多

MySQL系列(8): group by 坑和 update 强制条件

MySQL 5.7.5 版本,默认开启了only_full_group_by模式,select字段只能是group by的字段,否则会报错,可以关闭该模式,或使用 any_value(column) 来抑制该异常。

防止在生产中使用 update 语句漏带条件导致全表更新事故,开启安全更新模式,强制带条件更新,否则报错。 

阅读更多

MySQL系列(7): 存储引擎介绍

MySQL 默认支持多种存储引擎,提供了灵活的存储,以支持不同场景的应用。

MySQL 8.0 版本,默认使用 InnoDB存储引擎,即建表语句(CREATE TABLE) 不带 ENGINE=子句会创建 InnoDB 表。

关于 MySQL 存储引擎,可以单独写成一个系列文章,后续有时间列入计划中。The InnoDB Storage Engine - 官网lternative Storage Engines - 替代引擎

阅读更多

MySQL系列(4): MySQL 常用函数

  MySQL 提供了丰富的函数,可以帮助编写简单快捷的 SQL 语句。比如字符串处理、数值运算、日期运算等。

  常用的函数有字符串函数日期函数数值函数聚合函数,还有 全文检索函数转换函数XML函数位操作函数加密解密函数锁函数MySQL信息函数几何函数空间函数JSON 函数MySQL 企业加密函数其它函数

  MySQL 8.0 函数和操作官方文档

  此篇文章目的是作为字典,看过一遍先了让自己有个映像有些函数可以实现某些功能,具体需要使用再查询,多用几次就记住了。

阅读更多

MySQL系列(3): 基本数据类与类型选择

  MySQL 支持多种数据类型来存储数据,包括数值类型、字符串类型、时间和日期类型、JSON格式类型
  
  本篇是对 MySQL 5.7 版本官方手册 **[MySQL 5.7 Reference Manual . Chapter 11 Data Types]**章节的简单汇总,便于快速查看。

阅读更多

MySQL系列(2): 快速了解基本的 SQL 操作

快速了解基本的 SQL 语句。

SQL(Structure Query Language - 结构化查询语言),已是关系数据库的基本标准。

本篇涉及到的 SQL 语法可能并不完整,主要是为了快速构建一个 SQL 操作的概念。实际工作中大多会借用工具来快速操作,如SQLyog、Navicat

阅读更多

MySQL系列(1):开篇前言

  初衷,做开发有些年,数据库这块大部分也是和 MySQL 打交道,有很多临时、零散、不成体系的笔记和日志,但极缺乏一个对MySQL全面的、系统的认知,所以写这系列文章,以期补上。

  本系列文章基于 MySQL 8.0 版本,也是市面和云平台用生产部署使用的较多的版本,也会涉及MariaDB相关特性。在写这篇文章之时,MySQL 8.0 已正式发布,是个大版本,有较大的改动和优化,基于新版本稳定性问题的考虑,估计目前市场使用极少。后续对 MySQL 8.0.x特性做补充。

  在关系数据库领域,MySQL占大半的市场份额,特别是中小型企业或互联网企业。开源的MySQL社区版本是免费的,基本可以满足对业务数据存储的需求。

  近些年出现了很多优秀的NOSQL产品,个人认为NOSQL凭借优秀的特性,与关系数据库是个互相协作的关系,充分发挥各自的优势,为系统提供优秀服务。

  目前还看不到NOSQL可以完全替代关系数据库的迹象,关系数据库仍将长久生存下去,MySQL 仍值的系统研究学习。

MySQL 相关链接:MySQL 官网MySQL Community Server DownloadMySQL DocumentationMySQL GitHubMySQL test_db GitHub

MariaDB(mysql 分支) :MariaDB Foundation(基金会)MariaDB DownloadsMariaDB 社区官网 MariaDB Knowledge Base, MariaDB GitHub

阅读更多