数据库mysql理解,mysql数据库概念
本文内容列表:
- 1.什么是MySql数据库?
- 2.什么是mysql数据库?
- 3、mysql有什么特点?
什么是MySql数据库
MySQL数据库:
MySQL是一个开源关系数据库管理系统(RDBMS),使用最常用的数据库管理语言——结构化查询语言(SQL)进行数据库管理。
MySQL 是开源的,因此任何人都可以在通用公共许可证下下载并根据个人需要进行修改。
MySQL 因其速度、可靠性和适应性而受到广泛关注。大多数人都认为 MySQL 是管理无需事务处理的内容的最佳选择。
数据库简介:
MySQL 是一个开源关系数据库管理系统(RDBMS)。 MySQL数据库系统采用最常用的数据库管理语言——结构化查询语言(SQL)进行数据库管理。
由于MySQL是开源的,任何人都可以在通用公共许可证下下载它并根据个人需求进行修改。 MySQL因其速度、可靠性和适应性而受到广泛关注。大多数人都认为 MySQL 是管理无需事务处理的内容的最佳选择。
MySQL这个名字的由来不是很清楚。一个更有影响力的说法是,10多年来基本指南和大量库和工具都以“my”为锚定,而MySQL AB创始人之一Monty Widenius的女儿也被称为My。 MySQL 的名称是两者中的哪一个命名的,这对于开发人员来说仍然是个谜。
MySQL 的海豚徽标名称为“sakila”,是 MySQL AB 的创始人从“海豚命名”竞赛中用户建议的大量名称中选出的。获奖名称由来自非洲斯威士兰的开源软件开发人员 Ambrose Twebaze 提供。据安布罗斯介绍,萨基拉来自斯威士兰方言SiSwati,也是坦桑尼亚阿鲁沙的一个小镇的名字,靠近安布罗斯的家乡乌干达。
MySQL可能不是很强大,但是由于它的开源和广泛使用,很多人都了解了这个数据库。它的历史也是传奇的。
MySQL数据库历史:
MySQL的历史最早可以追溯到1979年,那时Oracle也才小打小闹,微软的SQL Server影子都没有。有一个人叫Monty Widenius, 为一个叫TcX的小公司打工,并用BASIC设计了一个报表工具,可以在4M主频和16KB内存的计算机上运行。过了不久,又将此工具,使用C语言重写,移植到Unix平台,当时,它只是一个很底层的面向报表的存储引擎。这个工具叫做Unireg。
可是,这个小公司资源有限,Monty天赋极高,面对资源有限的不利条件,他反而更能发挥潜能,总是力图写出最高效的代码。并因此养成了习惯。与Monty同在一起的还有一些别的同事,很少有人能坚持把那些代码持续写到20年后,而Monty却做到了。
1990年,TcX的customer 中开始有人要求要为它的API提供SQL支持,当时,有人想到了直接使用商用数据库算了,但是Monty觉得商用数据库的速度难令人满意。于是,他直接借助于mSQL的代码,将它集成到自己的存储引擎中。但不巧的是,效果并不太好。于是, Monty雄心大起,决心自己重写一个SQL支持。
1996年,MySQL 1.0发布,只面向一小拨人,相当于内部发布。到了96年10月,MySQL 3.11.1发布了,呵呵,没有2.x版本。最开始,只提供了Solaris下的二进制版本。一个月后,Linux版本出现了。
紧接下来的两年里,MySQL依次移植到各个平台下。它发布时,采用的许可策略,有些与众不同:允许免费商用,但是不能将MySQL与自己的产品绑定在一起发布。如果想一起发布,就必须使用特殊许可,意味着要花银子。当然,商业支持也是需要花银子的。其它的,随用户怎么用都可以。这种特殊许可为MySQL带来了一些收入,从而为它的持续发展打下了良好的基础。(细想想,PostgreSQL曾经有几年限入低谷,可能与它的完全免费,不受任何限制有关系)。
MySQL3.22应该是一个标志性的版本,提供了基本的SQL支持。
MySQL关系数据库的第一个版本于1998年1月发布,它利用系统内核提供的多线程机制,提供完整的多线程操作方式,为编程语言提供编程接口(API) 、Java、Perl、PHP、Python和Tcl,以及支持多种字段类型。并提供完整的运算符来支持查询中的SELECT和WHERE操作。
MySQL 是开源的,因此任何人都可以在通用公共许可证下下载并根据个人需要进行修改。 MySQL因其速度、可靠性和适应性而受到广泛关注。
1999-2000年,在瑞典成立了一家公司,名为MySQL AB(AB在瑞典语中是“股份公司”的意思)。我雇佣了几个人并与 Sleepycat 合作开发 Berkeley DB 引擎。由于BDB支持事务处理,MySQL从此开始支持事务处理。
2000年4月,MySQL对旧的存储引擎进行了整理,并命名为MyISAM。与此同时,2001年,Heikiki Tuuri向MySQL提出建议,希望集成他们的存储引擎InnoDB,该引擎也支持事务处理和行级锁定。
今天不幸的是,BDB和InnoDB似乎都被Oracle收购了。为了消灭竞争对手,哪怕是开源,他们也会使用一切手段。
MySQL和InnoDB的官方组合版本是4.0。
随着 2003 年 12 月的 MySQL 5.0,开始引入诸如视图和存储过程之类的东西。当然,这期间也犯了很多错误。
MySQL于2008年1月16日被Sun收购。
近日,MySQL创始人Monty Widenius向Sun提交了辞呈。头走了。
据说Sun收购的公司都非常不幸。不知道MySQL的未来会是什么样子。我希望一切顺利。我认为MySQL的生命力还是很长的。
今天mysql和php的结合绝对是完美的。很多大型网站也使用mysql数据库。 mysql的发展前景非常广阔!
MySQL常用命令:
1:使用SHOW语句查看服务器当前存在哪些数据库:
mysql SHOW DATABASES;
2:2。创建数据库 MYSQLDATA
mysql CREATE DATABASE MYSQLDATA;
3:选择你创建的数据库
mysql USE MYSQLDATA; (按回车,当显示Databasechanged时,操作成功!)
4:查看当前数据库中存在哪些表
mysql SHOW TABLES;
5:创建数据库表
TABLE TABLE TABLE TABLE MYTABEL (name VARCHAR(20), sex CHAR(1));
6:显示表的结构:
mysql DESCRIBE MYTABLE;
7:向表中添加记录
insert into mysql MYTABLE-values("hyq","M");
8:以文本方式加载数据到数据库表中(如D:/mysql.txt)
mysql LOAD DATA LOCAL INFIL “D:/mysql.txt” INTO TABLE MYTABLE;
9:导入.sql文件命令(如D:/mysql.sql)
mysqluse数据库;
mysqlsource d:/mysql.sql; :删除表
mysqldrop TABLE MYTABLE;
11:清除表
mysqldelete from MYTABLE;
12:更新表中的数据
hy=”qlupdate M=hy'QBLE”;
全局管理权限对应说明:
FILE:读写MySQL服务器上的文件
PROCESS:显示或杀死属于其他用户的服务线程。
RELOAD:重新加载访问控制列表、更新日志等。
SHUTDOWN:关闭MySQL服务。
数据库/数据表/数据列权限:
ALTER:修改现有数据表(例如添加/删除列)和索引。
CREATE:创建新的数据库或数据表。
删除:从表中删除条目。
DROP:删除数据表或数据库。
INDEX:创建或删除索引。
INSERT:向表中添加记录。
SELECT:显示/搜索表中的记录。
更新:编辑表中的现有条目。
特殊权限:
ALL:允许执行所有操作(与 root 相同)。
用途:仅允许登录 - 不允许其他任何操作。
MySQL数据库导入方法:
导入MySQL数据库有两种方法:
1)先导出数据库SQL脚本,再导入;
2)直接复制数据库目录和文件。
在不同操作系统或MySQL版本下,直接复制文件的方法可能不兼容。
所以一般建议以SQL脚本形式导入。下面分别介绍这两种方法。
2。方法1 SQL脚本形式
步骤如下:
2.1.导出SQL脚本
在原数据库服务器上,可以使用phpMyAdmin工具或mysqldump命令行导出SQL脚本。
2.1.1 使用phpMyAdmin工具
导出选项中选择导出“结构”和“数据”,不要添加“DROP DATABASE”和“DROP TABLE”选项。
选择“另存为文件”选项。如果数据量很大,可以选择“gzipped”选项。
保存导出的SQL文件。
2.1.2 使用mysqldump命令行
命令格式
mysqldump -u 用户名 -p 数据库名 数据库名.sql
示例:
rootsqldump -u。 (将数据库 abc 导出到 abc.sql 文件)
当提示输入密码时,输入数据库用户名的密码。
2.2。创建空数据库
通过主控制界面/控制面板创建数据库。假设数据库名称为abc,数据库的完整用户为abc_f。
2.3。导入并执行SQL脚本
也有两种方法,一是使用phpMyAdmin(mysql数据库管理)工具或者mysql命令行。
2.3.1 使用phpMyAdmin工具
在控制面板中,选择已创建的空数据库,点击“管理”,进入管理工具页面。
在“SQL”菜单中,浏览并选择刚刚导出的SQL文件,点击“执行”上传并执行。
注意:phpMyAdmin 对上传文件的大小有限制。 PHP本身对于上传文件的大小也有限制。如果原sql文件
比较大,可以先用gzip压缩一下。对于sql文件等文本文件,可以使用1:5或更高的压缩比。
如何使用gzip:
# gzip xxxxx.sql
获取文件
xxxxx.sql.gz。
当提示输入密码时,输入数据库用户名的密码。
3 直接复制
如果数据库比较大,可以考虑使用直接复制的方式,但不同版本和操作系统可能不兼容,请谨慎使用。 ? mydb.tar.gz
3.4 复制
将解压后的数据库文件复制到相应文件夹
cd mydb/
cp * /var/lib/mysql/mydb/❀Free cp * /var/db/mysql/mydb/
3.5 权限设置
将复制的文件所有者更改为mysql:mysql,权限更改为660
chown mysql:mys /mydb/*
chmod 660 /var /lib/mysql/mydb/*
Mssql转换mysql的方法:
1.引导表结构
使用MySQL生成创建脚本的方法。找到需要导出的脚本,根据MySQL语法进行修改,创建MySQL数据库中表的列结构。
2。导出表数据
在 MSSQL 页面使用 bcp 导出文本文件:
bcp “SELECT * FROM dbname.dbo.tablename;” queryout tablename.txt -c -Slocalhost\db2005 -Usa
其中""为要导出的sql语句,-c表示使用\t进行字段分隔,使用\n进行记录分隔,-S表示数据库服务器和实例,-U表示用户名,-P表示密码。
在MySQL页面使用mysqlimport将文本文件导入到对应的表中
mysqlimport -uroot -p 数据库名/home/ test/tablename.txt
其中-u表示用户名,-p表示密码,数据库名表示数据库名,table名与文件名相同
MySQL备份与恢复:
MySQL 备份和恢复数据的一般步骤
数据库备份示例:
1。备份前涉及读锁定的表
mysqlLOCK TABLES tbl1 READ,tbl1 READ,…
如果在 mysqldump 实用程序中使用 --lock-tables 选项,则不需要使用上述 SQL 语句。 ?进行数据更改是为了准备恢复数据。
4。解锁表上的读锁
mysqlUNLOCK TABLES;
为了加快上述过程,可以这样做:
shell mysqldump --lock-tables --opt db_namedb_name.sql; mysqladminlush-logs
但这可能会导致一个小问题。上述命令在启用新的更新日志之前恢复表上的读锁定。
在更新繁忙的站点上,可能存在备份后更新的数据未记录在新日志中的情况。
现在恢复上面备份的数据库
1。对涉及的表使用写锁
mysqlLOCK TABLES tbl1 WRITE,tbl1 WRITE,…
2。恢复备份的数据
shellmysql db_name db_name.sql
3.恢复更新日志的内容
shellmysql --one-database db_name hostname.nnn
假设要使用的日志名称为 hostname.nnn
4。启用新的更新日志
shellmysqladminlush-logs
5。释放表上的写锁
mysqlUNLOCK TABLES;
希望上面的例子能够给你带来启发,因为备份数据的方法有很多种,你使用的可能与上面的不同。不一样,但是对于备份和恢复来说,表锁定和激活新更新日志的时机应该是类似的,所以要仔细考虑这个问题。
MySQL数据库优化:
选择InnoDB作为存储引擎
大型产品数据库对可靠性和并发性有更高的要求。 InnoDB作为MySQL默认的存储引擎,比MyISAM选择的要好。
优化数据库结构
组织数据库架构、表和字段以减少 I/O 开销,将相关项存储在一起并提前规划,以便随着数据量的增长,性能也能保持在较高水平。
数据表的设计应尽量减少其占用的空间,表的主键应尽可能短。 ·对于InnoDB表来说,主键所在的列在每个二级索引条目中都是可复制的,所以如果二级索引很多,短的主键可以节省很多空间。
仅创建提高查询性能所需的索引。索引有助于检索,但会增加插入和更新操作的执行时间。
InnoDB 中的 ChangeBuffering 功能
InnoDB 提供了 ChangeBuffering 配置,以减少维护辅助索引所需的磁盘 I/O。大型数据库可能会经历大量的表操作和大量 I/O,以保持二级索引最新。当相关页面不在缓冲池中时,InnoDB的changebuffer会将更改缓存到二级索引条目中,从而避免因无法立即从磁盘读取页面而导致的耗时的I/O操作。当页面加载到缓冲池中时,更改将合并到缓冲区中,更新的页面稍后会刷新到磁盘。这提高了性能并且适用于 MySQL 5.5 及更高版本。
InnoDB 页面压缩
InnoDB 支持页面级别的表压缩。当写入一页数据时,会使用特定的压缩算法对其进行压缩。压缩后的数据被写入磁盘,其空洞机制在页末尾释放空块。如果压缩失败,数据将保持不变。表和索引被压缩,因为索引通常占数据库总大小的很大一部分。压缩可以显着节省内存、I/O 或处理时间,从而达到提高性能和可扩展性的目标。它还减少了内存和磁盘之间传输的数据量。 MySQL5.1及以后版本支持该功能。
请注意,页压缩不支持共享表空间中的表。共享表空间包括系统表空间、临时表空间和常规表空间。
使用批量数据导入
使用主键上已排序的数据源进行批量数据导入可以加快数据插入过程。否则,可能需要在其他行之间插入行以维持顺序,这可能会导致高磁盘 I/O、影响性能并增加分页。禁用自动提交模式也很有用,因为它会为每次提交执行日志刷新到磁盘。在批量插入期间临时移动唯一键和外键也可以显着减少磁盘 I/O。对于新创建的表,最佳实践是在批量导入后创建外键/唯一键约束。
当您的数据达到稳定大小或不断增长的表增加了数十或数百兆字节时,您应该考虑使用 OPTIMIZETABLE 语句来重新组织表并压缩浪费的空间。对重组表进行全表扫描将需要更少的 I/O。
优化 InnoDB 磁盘 I/O
增加 InnoDB 缓冲池大小允许从缓冲池而不是通过磁盘 I/O 访问查询。通过调整innodb_flush_method系统变量来调整缓冲区刷新指标以达到最佳水平。
MySQL的内存分配
在为MySQL分配足够的内存之前,需要考虑MySQL在不同区域的内存需求。需要考虑的关键领域是: 并发连接 - 由于存在大量并发连接,排序和临时表将需要大量内存。在撰写本文时,16GB 到 32GB 的 RAM 足以让数据库处理 3000 多个并发连接。
内存碎片可能会消耗大约 10% 或更多的内存。缓存和缓冲区(如 innodb_buffer_pool_size、key_buffer_size、query_cache_size 等)使用约 80% 的已分配内存。
日常维护
定期检查慢查询日志,优化查询机制,高效利用缓存,减少磁盘I/O。优化它们以扫描最少的行数,而不是进行全表扫描。
其他可以帮助DBA检查和分析性能的日志包括:错误日志、通用查询日志、二进制日志和DDL日志(元数据日志)。
定期更新缓存和缓冲区以减少碎片。使用 OPTIMIZETABLE 语句重新组织表并压缩任何浪费的空间。
什么是mysql数据库?
数据库是按照数据结构组织、存储和管理数据的存储库。
每个数据库都有一个或多个不同的 API,用于创建、访问、管理、搜索和复制存储的数据。
我们也可以将数据存储在文件中,但是文件中数据的读写速度比较慢。
所以现在我们使用关系数据库管理系统(RDBMS)来存储和管理大量数据。所谓关系数据库,就是基于关系模型的数据库,利用集合代数等数学概念和方法来处理数据库中的数据。
RDBMS(关系数据库管理系统)的特点:
1。数据以表
2的形式显示。每行包含不同的帖子名称
3。每列包含记录名称。对应的数据字段
4。许多行和列形成一个形状
5。几种形式组成一个数据库
mysql有什么特点
1。 MySQL性能优良,服务稳定,异常宕机现象罕见。
2、MySQL开源,无版权限制,具有自主性,使用成本低。
3。 MySQL 历史悠久,并被用户积极使用。如果遇到问题,可以寻求帮助。
4。 MySQL体积小,易于安装和维护。
5。 MySQL 享有良好的声誉。公司可以不假思索地使用它。 LAMP 和 LNMP 是流行的架构。
6。 MySQL支持多种操作系统,提供多种API,支持多种开发语言,特别是PHP。
SQL Server 有很多优点,但 Microsoft SQL Server 与其他数据库产品相比也存在以下缺点:
1。开放性。它只能运行在微软的Windows平台上,完全没有开放性。
2。可扩展性和并行性。并行实现和共存模型不成熟,难以处理不断增长的用户数量和数据量,并且可扩展性有限。
3。性能稳定。当用户连接较多时,SQLServer性能会变得很差,而且不够稳定。
4。使用风险。 SQL Server完全重写的代码经历了长期的测试和不断的延迟,很多功能都需要时间来证明。与以前的产品不太兼容。使用具有一定风险。
5。客户端支持和应用程序状态。仅支持C/S模式。

版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网