数据库恢复服务热线:13764045638(微信) QQ: 47079569
Oracle MySQL 数据恢复 数据库讨论QQ群号: 171092051
本文地址:https://www.askmaclean.com/archives/mysql-maintenance-type.html
章节概述
本章介绍如何在MySQL中进行表的维护管理。你会了解:
一些表维护操作对于判定并修正数据库中的问题(例如,当一张表由于服务器奔溃而导致损坏后)或帮助MySQL优化表查询时非常有用。MySQL(根据存储引擎)可允许你执行几种类型的维护操作:
存储引擎名 | MyISAM | InnoDB |
CHECK TABLE | 完整检查更新索引统计信息 | 完成检查 |
REPAIR TABLE | 修理讹误表 | N/A |
ANALYZE TABLE | 更新索引统计信息 | 更新索引统计信息 |
OPTIMIZE TABLE | 回收被浪费的空间表碎片整理索引页排序
更新索引统计信息 |
表重建(MySQL 5.7.4以后部分使用了online DDL的机制避免了表拷贝) |
本文地址:https://www.askmaclean.com/archives/mysql-partition-type.html
通常使用数据库分区时会按日期时间来都对数据进行分割。一些数据库系统支持显式时间日期分区语法,不过MySQL不支持。不过在MySQL中,想要基于DATE,TIME,或DATETIME列来建立分区,或基于使用这些列进行计算的表达式来进行分区都并不困难。
当通过KEY或LINEAR KEY建立分区时,你可以在不对DATE,TIME或DATETIME列进行任何值修改的情况下,直接使用它们来进行分区。例如,以下表分区语句在MySQL中是可行的:
CREATE TABLE members ( firstname VARCHAR(25) NOT NULL, lastname VARCHAR(25) NOT NULL, username VARCHAR(16) NOT NULL, email VARCHAR(35), joined DATE NOT NULL ) PARTITION BY KEY(joined) PARTITIONS 6;
本文地址:https://www.askmaclean.com/archives/mysql-partition.html
章节概述
本章介绍在MySQL中分区的管理。你会了解:
SQL标准中并不提供很多关于数据物理存储方面的指导。而SQL语句本身趋向于独立于数据结构或这些模式(schema/database),表,行或列下对应的介质进行运行。但是,大多数高级的数据库管理系统都会有一些方法来判断具体被用于存储的文件系统或硬件下的数据片的物理位置。在MySQL中,InnoDB存储引擎还支持表空间概念。在MySQL服务端,介绍分区之前,你可以配置不同的空物理目录来存储不同的数据库。
Tips:分区是从MySQL 5.1.14-Beta版本开始被引入的功能。
分区在此基础上更近一步,允许你在将单个表的各个部分分布在整个文件系统中(只要所设分区文件的大小遵守系统的规则)。实时上,一张表的不同部分可以如各个分割的表存储在不同位置。数据通过用户选择的规则进行的分割(我们称为分区功能),如按量值进行分区,或简单匹配一个值列范围进行分区,或使用内部哈希函数或一个线性函数进行分区等。如何分区由用户按分区类别来确定,其所用的功能匹配可以接受用户提供的表达式值作为参数,表达式可以是一个整型列值,或在对一个或多个列进行处理后来得出的一个整数来作为返回。表达式的值被传给分区功能函数,此函数会返回一个整数值代表了对应数据行应该被存放在哪个分区的分区号。此功能函数必须是非静态值和非随机值。它不能包含任何查询,但可以“虚拟的“使用在MySQL中有效的任意表达式(只要表达式返回的正整数小于最大可能的正整数值MAXVALUE即可)。
我们在这里所介绍的分区在概念上指水平分区(horizontal partitioning)– 即,表中的不同行可以在不同的物理分区中。MySQL不支持垂直分区(vertical partitioning),即表中的不同列被分派到不同的物理分区中。到现在为止,MySQL还未有任何计划来引入垂直分区功能。
9.1.1 查看分区功能启用状态
在MySQL 5.6版本之前,你可以通过使用以下语句来查看MySQL的分区功能是否已经启用:
mysql> SHOW VARIABLES LIKE '%partition%'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | have_partitioning | YES | +-------------------+-------+ 1 row in set (0.00 sec)
不过从MySQL 5.6开始,have_partitioning环境变量已经被移除,因此你需要使用show plugins来查看partition的启用情况。
如果对应状态显示未被启用的话,则说明当前的MySQL服务端不支持分区功能。
本文地址:https://www.askmaclean.com/archives/mysql-storage-engines-choice.html
当建立一张表,你需要首先问一下自己这张表被用于何种类型的查询。然后选择一种存储引擎来适合查询所涉及到的锁级别。MyISAM表级锁对于在进行繁重的查询数据抽取而极少有更新的情况下运行效果好。而如果运行中有大量更新操作的话,InnoDB是更好的选择。InnoDB使用行级锁和多版本控制对于大量数据读取和更新提供了并行性。一个查询可以对某些行进行更新,而同时其它查询则可以对同表中的其它行进行读取和更新。
如果你使用MyISAM表,那么使用何种列结构来对处理速度或磁盘使用效率的考量就会变得重要。不同的MyISAM存储格式具有不同的性能特定。其影响你最终是否选择定长或变长列进行字符串数据存储:
使用MyISAM表的另一种方式是用来作为压缩的只读表。
对于InnoDB表,使用CHAR列平均上来看会比表VARCHAR使用更多空间。但是InnoDB中两者不会如在MyISAM中具有查询速度差异。这是由于InnoDB引擎在实现上对CHAR和VARCHAR使用了相似方式。事实上,CHAR值的获取可能还慢一些,因为平均上来说,它们需要从磁盘上读取更多信息。
本文地址:https://www.askmaclean.com/archives/mysql-table-maintain.html
完成本课程后,你应该能够:
备注:
在执行请求的操作之后,服务器返回操作的结果信息到客户端。
结果信息以四列格式显示:
如果想获取关于MySQL表维护的更多信息,可以参照文档:
MySQL Reference Manual
http://dev.mysql.com/doc/mysql/en/table-maintenance-sql.html
本文地址:https://www.askmaclean.com/archives/mysql-other-storage-engines.html
MySQL服务端还支持除之前所介绍之外的其它几种数据引擎(当然有些存储引擎随着各种原因,或渐渐淡出MySQL主流舞台,或被弃用,而第三方提供的存储引擎更是层出不穷,因此,这里我们就不一一列举了,只介绍官方提到的一些引擎,权当个小知识即可),基于不同版本的MySQL,其默认是否进行了编译安装启用都会有所不同,这里不会做太深入的启用介绍,因此,如果大家感兴趣,可以查看MySQL的官方手册来了解。
8.3.1 EXAMPLE存储引擎
你可以将EXAMPLE引擎作为一个最佳的”MySQL存储引擎开发”样例来进行源码学习,事实上此引擎的目的也是如此,它并非用于生产环境,其不支持任何的数据插入操作,它对于有志于开发那些自有存储引擎的开发者起到了一个示范作用。
8.3.2 MERGE存储引擎
MERGE存储引擎,这里又个称为MRG_MYISAM存储引擎。它可以将多张完全相同的MyISAM存储引擎表“合而为一”(建立一张MERGE表,其定义包含有多张表结构,列顺序,索引相同的MyISAM表)。
虽然可以合并的限制较为严格,不过如果可用的话也会有以下优点:
优点不止于此,不过也有缺点:如MERGE表不可建立FULLTEXT索引;其索引读会慢一些等。
本文地址:https://www.askmaclean.com/archives/mysql-storage-engines-memory.html
MEMORY配置项:
MEMORY存储引擎作为一个有效且有用的引擎,应该在大多应用设计中考虑其的使用,以提高性能并满足特定的业务需要。以下是是对MEMORY存储引擎最佳实践中的一些建议:
Oracle大学为世界上最流行的开源数据库MySQL提供全面的课程和认证。扩展你的MySQL数据库知识通过行业专家的高品质的MySQL培训课程。一张MySQL证书展示你的专业知识,让你的职业生涯更广阔。
Oracle大学对MySQL的培训可以帮助你提高性能,整合业务并管理业务流程和数据。 MySQL课程包括专为数据库管理员和开发人员设计的课程,帮助你掌握MySQL数据库的特性和功能,以及为你的行业认可的证书作好准备。
在oracle.com/education/mysql查看完整的MySQL数据库的培训和认证文档。
Oracle大学是首屈一指的Oracle技术和产品的培训的供应商。作为世界上最大的企业培训机构之一,我们提供成几千个线下线上,虚拟和CD-ROM的课程。当你选择了Oracle大学,会有以下优势:
本文地址:https://www.askmaclean.com/archives/mysql-storage-engines-innodb.html
8.2.2 InnoDB存储引擎
使用InnoDB存储引擎管理的表具有以下等特点:
InnoDB表空间和日志:
InnoDB操作使用两种基于磁盘的资源:一个存储表内容的表空间和一堆记录事务活动的日志文件。
每个InnoDB表在数据库磁盘目录中拥有一个.frm格式文件。这和由其它MySQL存储引擎管理的表相同,如MyISAM。然而,InnoDB在管理表内容(数据行和索引)在磁盘上的存储和MyISAM存储引擎不同。默认是,InnoDB使用一个共享的“表空间”,其是由一个或多个文件组成的单个逻辑存储区。所有InnoDB表被存储在此表空间中,但并不是如MyISAM表的针对特定表的对应数据文件和索引文件形式。表空间中还包含有一个回滚段(rollback segment)。当事务修改了行数据,undo日志信息会被存储于此回滚段中,这些信息被用于回滚失败的事务。
Copyright © 2021 · Genesis Framework · WordPress · Log in