MySQL--01

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 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
目录
相关文章
|
Oracle 关系型数据库 MySQL
MySQL的介绍
MySQL的介绍
48 0
|
7月前
MySql45道练习
MySql45道练习
84 0
|
关系型数据库 MySQL 数据安全/隐私保护
Mysql
Mysql
50 0
|
SQL 存储 缓存
|
SQL 分布式计算 关系型数据库
MySql为什么要用where 1=1和where 1<>1
MySql为什么要用where 1=1和where 1<>1
75 0
|
存储 关系型数据库 MySQL
MySQL详解
@[TOC](目录) # 一、MySQL 概述 MySQL 是一种开源的关系型数据库管理系统,最初由瑞典的 MySQL AB 公司开发,并于 2008 年被 Oracle 收购。MySQL 是目前最流行的关系型数据库管理系统之一,广泛应用于 Web 应用程序、企业级应用程序、大数据和数据挖掘等领域。 MySQL 的历史和发展: MySQL 最初是由 Michael Widenius 和 Allan Larsson 于 1979 年开发的。当时,他们正在为瑞典的一个电话公司开发一个账单系统,需要一个快速的数据存储和处理工具。他们决定使用关系型数据库管理系统,因为当时其他的数据存储和处理工具都比较
107 0
|
存储 SQL Oracle
Mysql的前世今生,Hello,Mysql
1.什么是数据库? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。 我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
119 0
Mysql的前世今生,Hello,Mysql
|
SQL 关系型数据库 MySQL
MySQL(三)
MySQL(三),一起来学习吧。
|
存储 SQL 安全
MySQL 是什么
MySQL 是什么
357 0
|
监控 安全 关系型数据库
Mysql常见配置
配置文件所在位置 查看配置文件的位置和加载顺序: mysql --help 查看: Default options are read from the following files in the given order: C:\Windows\my.
5003 0