MySQL--01

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL--01

1.什么是Mysql:

MySQL是一种开源的关系型数据库管理系统(RDBMS),它是最流行的数据库之一。MySQL使用结构化查询语言(SQL)来管理和操作数据。它支持多用户、多线程的访问,并能够在各种操作系统上运行。

MySQL广泛应用于Web应用程序的后端,用于存储和管理大量的数据。它被许多大型网站和应用程序使用,包括Facebook、Twitter和YouTube等。

MySQL以其高性能、可靠性和易用性而闻名。它具有丰富的特性,包括索引、事务支持、视图、触发器和存储过程等。此外,MySQL还支持各种编程语言和开发工具,可方便地与其他应用程序集成。

2.数据库存储引擎:

数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎

MySQL数据库支持多种存储引擎,每个存储引擎都有不同的特点和适用场景。以下是一些常见的MySQL存储引擎:

  1. InnoDB:InnoDB是MySQL的默认存储引擎,它支持ACID事务,具有较好的并发性和崩溃恢复能力。它采用行级锁定,能够处理高并发的读写操作。InnoDB支持外键约束、故障恢复和崩溃恢复,并提供了较高的数据安全性和可靠性。
  2. MyISAM:MyISAM是MySQL的另一个常见存储引擎。它具有较快的读取速度和较小的存储空间消耗。MyISAM不支持事务和行级锁定,但适合于读操作频繁、写操作相对较少的场景,例如日志记录、数据仓库等。

存储引擎怎么看:

InnoDB和MyISAM的区别:

事务

一个是行锁定一个是表锁定

InnoDB行锁定:

InnoDB是MySQL数据库中最常用的存储引擎之一,也是默认的存储引擎。以下是关于InnoDB的一些特点:

  1. 支持事务处理:InnoDB存储引擎具有ACID(原子性、一致性、隔离性和持久性)特性,支持事务处理。它使用了多版本并发控制(MVCC)来实现高并发和数据一致性。
  2. 行级锁定:InnoDB支持行级锁定,可以避免数据冲突和死锁问题。这意味着多个事务可以同时对表中的不同行进行更改而彼此不会互相阻塞。
  3. 外键约束:InnoDB支持外键约束,这允许在表之间建立关联关系,并自动处理相关的数据一致性和完整性。
  4. 支持并发读写:InnoDB通过采用多版本并发控制(MVCC)来支持高并发的读写操作。不同的事务可以并发地读取和修改数据,而且不会相互冲突。
  5. 崩溃恢复能力:InnoDB具有良好的崩溃恢复能力。它使用写前日志(Write-Ahead Logging,WAL)技术来确保在数据库崩溃或意外断电时数据的一致性和完整性。
  6. 适用于高负载环境:InnoDB适用于处理高负载和高并发的应用程序,它通过优化索引和缓存、提供高效的数据读写方式,以及使用并发控制机制来提供高性能和可扩展性。

MyISAM表锁定:在查询方面效率更高因为它不支持事务

MyISAM是MySQL数据库中另一种常见的存储引擎。以下是关于MyISAM的一些特点:

  1. 不支持事务处理:与InnoDB不同,MyISAM存储引擎不支持事务处理。这意味着它无法提供原子性和数据一致性的保证。
  2. 表级锁定:MyISAM使用表级锁定机制,这意味着对一个表的写入操作会阻塞对该表的其他写入操作。也就是说,它不支持行级锁定,可能导致并发读写操作之间的冲突。
  3. 高性能读取操作:MyISAM在读取高频率的场景下具有很好的性能。由于它使用了表级锁定,读取操作不会出现锁冲突,因此在主要是读取操作的应用程序中,性能较好。
  4. 全文搜索支持:MyISAM提供了全文搜索的功能,可以进行文本的关键字搜索。
  5. 适用于只读或少量写入的应用:由于MyISAM不支持事务处理和行级锁定,它更适合只读或少量写入的应用场景。
  6. 例如,静态网站或报表查询等应用程序可以从MyISAM的性能优势中受益。

什么是ACID:

ACID是数据库管理系统中用于确保事务处理正确性和可靠性的关键特性。ACID是以下四个属性的缩写:

  1. 原子性(Atomicity):表示一个事务中的所有操作要么全部成功执行,要么全部回滚。事务是一个不可分割的工作单位,要么完全完成,要么不做任何改变。
  2. 一致性(Consistency):表示数据库在事务开始之前和结束之后都必须保持一致的状态。事务执行的操作必须满足预先定义的约束和规则,以确保数据库的完整性。
  3. 隔离性(Isolation):表示并发执行的事务之间应该彼此隔离,互相不干扰。每个事务运行时都应该像是在系统中独立运行的,即使有多个事务同时运行,也不能相互干扰。
  4. 持久性(Durability):表示一旦事务提交成功,所做的数据修改必须永久保存,即使在系统故障或断电等异常情况下也能够恢复到事务提交之后的状态。

ACID属性的存在确保了数据库中的事务处理的可靠性和一致性。只有满足了ACID属性,数据库才能够提供可靠的数据处理和一致的结果。

需要注意的是,ACID属性对于某些特定的数据库存储引擎或配置选项可能会有一定的限制或调整。一些存储引擎可能提供更高的并发性能或灵活性,但在某些条件下可能无法提供完全的ACID保证。因此,在选择数据库系统和存储引擎时,需要根据应用需求和数据的重要性来权衡和选择。

四种隔离级别

  1. 读未提交(Read Uncommitted):
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
  1. 读已提交(Read Committed):
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
  1. 可重复读(Repeatable Read):
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
  1. 串行化(Serializable):
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

可以使用以下语句来查看当前事务的隔离级别:

SELECT @@tx_isolation;

 

3.数据库授权

数据库分三类:

测试库(是你公司的):测试库是指用于进行软件测试的数据库。它是一个用于模拟真实生产环境的数据库环境,用于开发和验证软件系统的功能、性能和可靠性。
开发库(是你的):指用于软件开发过程中的数据库环境。它是开发人员在开发软件时使用的数据库,用于设计、编码和测试软件系统的功能。
生产库(客户公司的):指用于生产环境中实际运行的数据库。它是存储和管理实际业务数据的数据库,用于支持生产系统的正常运行。
用sql语句来查找用户:

查找云数据库的版本:

查看用户权限:

MySQL8:

#命令:create user 用户名 identified by '密码';
create user test01;
ALTER USER 'test01'@'%' IDENTIFIED WITH mysql_native_password BY 'test01';
#MySQL8
select * from user;
#5.设置权限(Grant)
#语法:grant privileges on databasename.tablename to username@'host';
#给 zs用户 赋予 数据库db_xiaoli中的表t_p1_user 查询权限
grant SELECT on db_xiaoli.t_p1_user to zs@'%';
#给 zs用户 赋予 数据库db_xiaoli中的表t_p1_user 修改权限
grant UPDATE on db_xiaoli.t_p1_user to zs@'%';
#给 zs用户 赋予 数据库db_xiaoli中所有表 查询权限
grant SELECT on db_secondhandmarket.* to test01@'%';
#给 zs用户 赋予 数据库db_xiaoli中所有表 所有权限
grant ALL on db_crm.* to test01@'%';
6.撤销权限(Revoke)
#语法:revoke privileges on databasename.tablename from username@'host';
#啥也不能回收,不会对GRANT ALL PRIVILEGES ON `db_xiaoli`.* TO `zs`@`%`有任何影响
revoke DELETE on db_xiaoli.t_p1_user from zs@'%';
#可以回收GRANT SELECT, UPDATE ON `db_xiaoli`.`t_p1_user` TO `zs`@`%`这条权限语句
revoke all on db_xiaoli.t_p1_user from zs@'%';
#可以回收GRANT ALL PRIVILEGES ON `db_xiaoli`.* TO `zs`@`%`这条赋权语句带来的权限
revoke all on db_secondhandmarket.* from test01@'%';
#注:revoke只能回收grants列表中更小的权限;
SELECT VERSION();


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
什么是MySQL?
这篇文章介绍了MySQL,一个流行的开源数据库系统,用于Web应用。MySQL基于客户机/服务器架构,允许多用户并发访问并提供安全控制。它支持SQL标准,包括数据类型如数值、字符串和日期,以及内置函数。查询语言SQL是其核心,强调非过程化编程,简化数据操作。示例展示了如何用SQL选择特定记录。
38 4
什么是MySQL?
|
2月前
|
SQL 关系型数据库 MySQL
初学mysql
本文档介绍了MYSQL中的表格与键的概念,包括列、行、主键和外键。接着,展示了SQL语法基础,如创建、查看、删除数据库及操作表格。讨论了不同数据类型,如decimal、varchar、blob等。通过示例说明如何添加、删除列,插入、更新和删除数据,以及查询技巧,如使用WHERE、ORDER BY和LIMIT子句。
25 0
|
2月前
|
关系型数据库 MySQL AndFix
MySQL 8.0是MySQL
MySQL 8.0是MySQL发展的一个重要里程碑。在这个版本中,MySQL Server层的整体架构得到了质的飞跃,通过持续每三个月的迭代和重构工作,使得MySQL在性能和功能上都有了显著的提升。本文将基于MySQL 8.0.25源码,详细介绍MySQL 8.0的最新架构和一些重要的变化。
64 1
|
8月前
|
关系型数据库 MySQL
MySQL问题汇总
MySQL问题汇总
53 0
|
9月前
|
SQL 算法 关系型数据库
|
11月前
|
关系型数据库 MySQL
MySQL小总结
mysql基本操作 增删改查
|
存储 SQL 关系型数据库
盘点一下Mysql中的一些小知识(四)
盘点一下Mysql中的一些小知识(四)
71 0
|
关系型数据库 MySQL
MySQL一行变多行,多行变一行
MySQL一行变多行,多行变一行
173 1
MySQL一行变多行,多行变一行
|
SQL 存储 安全
MySQL DEFINER详解
在 MySQL 数据库中,在创建视图及函数的时候,你有注意过 definer 选项吗?在迁移视图或函数后是否有过报错情况,这些其实都可能和 definer 有关系。本篇文章主要介绍下 MySQL 中 definer 的含义及作用。
1021 0
|
SQL NoSQL 关系型数据库
MySQL之where使用
MySQL之where使用
203 0
MySQL之where使用