MySQL—碎片整理

MySQL—碎片整理,第1张

删除数据必然会在数据文件中造成不连续的空白空间,而当插入数据时,这些空白空间则会被利用起来.于是造成了数据的存储位置不连续,以及物理存储顺序与理论上的排序顺序不同,这种是数据碎片.实际上数据碎片分为两种,一种是单行数据碎片,另一种是多行数据碎片.前者的意思就是一行数据,被分成N个片段,存储在N个位置.后者的就是多行数据并未按照逻辑上的顺序排列.当有大量的删除和插入 *** 作时,必然会产生很多未使用的空白空间,这些空间就是多出来的额外空间.索引也是文件数据,所以也会产生索引碎片,理由同上,大概就是顺序紊乱的问题.Engine 不同,OPTIMIZE 的 *** 作也不一样的,MyISAM 因为索引和数据是分开的,所以 OPTIMIZE 可以整理数据文件,并重排索引。这样不但会浪费空间,并且查询速度也更慢。

查看碎片信息:

Index_length 代表索引的总量

Data_free 代表碎片数量

从information_schema中获取信息:

碎片整理:

过程时间长短取决于表大小和碎片多少,

返回结果optimize status OK则整理完成;

MYSQL

ALTER

TABLE命令用于修改表结构,例如添加/修改/删除字段、索引、主键等等,本文章通过实例向大家介绍MYSQL

ALTER

TABLE语句的使用方法,

MySQL

ALTER语法如下:

ALTER

[IGNORE]

TABLE

tbl_name

alter_spec

[,

alter_spec

...]

alter_specification:

ADD

[COLUMN]

create_definition

[FIRST

|

AFTER

column_name

]

or

ADD

INDEX

[index_name]

(index_col_name,...)

or

ADD

PRIMARY

KEY

(index_col_name,...)

or

ADD

UNIQUE

[index_name]

(index_col_name,...)

or

ALTER

[COLUMN]

col_name

{SET

DEFAULT

literal

|

DROP

DEFAULT}

or

CHANGE

[COLUMN]

old_col_name

create_definition

or

MODIFY

[COLUMN]

create_definition

or

DROP

[COLUMN]

col_name

or

DROP

PRIMARY

KEY

or

DROP

INDEX

index_name

or

RENAME

[AS]

new_tbl_name

or

table_options

下面来看几个实例:

1、向表employee中添加Account_Number字段并设置其字段类型为INT

ALTER

TABLE

employee

ADD

COLUMN

Account_Number

INT

2、修改表employee中的ID字段为索引

ALTER

TABLE

employee

ADD

INDEX

(ID)

3、修改表employee中的ID字段为主键PRIMARY

KEY

ALTER

TABLE

employee

ADD

PRIMARY

KEY

(ID)

4、修改表employee中的ID字段为唯一索引UNIQUE

ALTER

TABLE

employee

ADD

UNIQUE

(ID)

5、将employee表中的id字段重命名为salary并设置其数据类型为int

ALTER

TABLE

employee

CHANGE

ID

salary

INT

6、删除employee表中的Customer_ID字段

ALTER

TABLE

employee

DROP

Customer_ID

7、删除employee表中所有主键

ALTER

TABLE

employee

DROP

PRIMARY

KEY

8、删除employee表中字段Customer_ID的索引,只是将Customer_ID的索引取消,不会删除Customer_ID字段。

ALTER

TABLE

employee

DROP

INDEX

Customer_ID

9、修改employee表中First_Name的字段类型为varchar(100)

ALTER

TABLE

employee

MODIFY

First_Name

varchar(100)

10、将表employee重命名为Customer

ALTER

TABLE

employee

RENAME

Customer

11、多命令写在一起:

mysql>

ALTER

TABLE

Books

->

ADD

PRIMARY

KEY

(BookID),

->

ADD

CONSTRAINT

fk_1

FOREIGN

KEY

(PubID)

REFERENCES

Publishers

(PubID),

->

ADD

COLUMN

Format

ENUM('paperback',

'hardcover')

NOT

NULL

AFTER

BookName

感谢阅读此文,希望能帮助到大家,谢谢大家对本站的支持!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8512226.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存