首页数据库mysql数据库维护(mysql的特点是什么)

mysql数据库维护(mysql的特点是什么)

编程之家2023-10-21103次浏览

很多朋友对于mysql数据库维护和mysql的特点是什么不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

mysql数据库维护(mysql的特点是什么)

如何对MySQL数据库日志文件进行维护

相关文章:如何进行MySQL数据库表的故障检测如何修复MySQL数据库表如何对MySQL数据库表进行锁定如何使用新的更新日志如果你只使用一个更新日志,你只须清空日志文件,然后移走旧的更新日志文件到一个备份中,然后启用新的更新日志。用下列方法可以强制

相关文章:

如何进行MySQL数据库表的故障检测

如何修复MySQL数据库表

mysql数据库维护(mysql的特点是什么)

如何对MySQL数据库表进行锁定

如何使用新的更新日志

如果你只使用一个更新日志,你只须清空日志文件,然后移走旧的更新日志文件到一个备份中,然后启用新的更新日志。

用下列方法可以强制服务器启用新的更新日志:

◆ mysqladmin flush-logs

你一般需要在命令行提供使用的数据库用户:

mysql数据库维护(mysql的特点是什么)

mysqladmin _u root _p flush-logs

◆ mysqladmin refresh

你一般需要在命令行提供使用的数据库用户:

mysqladmin _u root _p refresh

如果你正在使用MySQL 3.21或更早的版本,你必须使用mysqladmin refresh。

◆ SQL命令

FLUSH LOGS

◆重启服务器

上述方法都具有这样的功能:

关闭并且再打开标准和更新记录文件。如果你指定了一个没有扩展名的更新记录文件,新的更新记录文件的扩展数字将相对先前的文件加1。

mysql>FLUSH LOGS;

如何使用新的常规日志

用上面的方法同样可以强制更新常规日志。

要准备备份常规日志,其步骤可能复杂一些:

$ cd mysql-data-directory

$ mv mysql.log mysql.old

$ mysqladmin flush-tables

然后做一个备份并删除“mysql.old”。

mysql的特点是什么

1)功能强大

MySQL中提供了多种数据库存储引擎,各引擎各有所长,适用于不同的应用场合,用户可以选择最合适的引擎以得到最高性能,可以处理每天访问量超过数亿的高强度的搜索 Web站点。MySQL5支持事务、视图、存储过程、触发器等。

2)支持跨平台

MySQL支持至少 20种以上的开发平台,包括 Linux、Windows、FreeBSD、IBMAIX、AIX、FreeBSD等。这使得在任何平台下编写的程序都可以进行移植,而不需要对程序做任何的修改。

3)运行速度快

高速是 MySQL的显著特性。在 MySQL中,使用了极快的 B树磁盘表(MyISAM)和索引压缩;通过使用优化的单扫描多连接,能够极快地实现连接;SQL函数使用高度优化的类库实现,运行速度极快。

4)支持面向对象

PHP支持混合编程方式。编程方式可分为纯粹面向对象、纯粹面向过程、面句对象与面向过程混合 3种方式。

5)安全性高

灵活和安全的权限与密码系统,允许基本主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码的安全。

6)成本低

MySQL数据库是一种完全免费的产品,用户可以直接通过网络下载。

7)支持各种开发语言

MySQL为各种流行的程序设计语言提供支持,为它们提供了很多的 API函数,包括 PHP、ASP.NET、Java、Eiffel、Python、Ruby、Tcl、C、C++、Perl语言等。

8)数据库存储容量大

MySQL数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由 MySQL内部限制决定的。InnoDB存储引擎将 InnoDB表保存在一个表空间内,该表空间可由数个文件创建,表空间的最大容量为 64TB,可以轻松处理拥有上千万条记录的大型数据库。

9)支持强大的内置函数

PHP中提供了大量内置函数,几乎涵盖了 Web应用开发中的所有功能。它内置了数据库连接、文件上传等功能,MySQL支持大量的扩展库,如 MySQLi等,可以为快速开发 Web应用提供便利。

MySQL数据库优化(七)

为了能最小化磁盘I/O MyISAM存储引擎采用了很多数据库系统使用的一种策略它采用一种机制将最经常访问的表保存在内存区块中

对索引区块来说它维护着一个叫索引缓存(索引缓冲)的结构体这个结构体中放著许多那些最常使用的索引区块的缓冲区块对数据区块来说 MySQL没有使用特定的缓存它依靠操作系统的本地文件系统缓存

本章首先描述了 MyISAM索引缓存的基本操作然后讨论在MySQL中所做的改进它提高了索引缓存性能同时能更好地控制缓存操作

线程之间不再是串行地访问索引缓存多个线程可以并行地访问索引缓存可以设置多个索引缓存同时也能指定数据表索引到特定的缓存中

索引缓存机制对 ISAM表同样适用不过这种有效性正在减弱自从MySQL开始 MyISAM表类型引进之后 ISAM就不再建议使用了 MySQL更是延续了这个趋势 ISAM类型默认被禁用了

可以通过系统变量 key_buffer_size来控制索引缓存区块的大小如果这个值大小为那么就不使用缓存当这个值小得于不足以分配区块缓冲的最小数量()时也不会使用缓存

当索引缓存无法操作时索引文件就只通过操作系统提供的本地文件系统缓冲来访问(换言之表索引区块采用的访问策略和数据区块的一致)

一个索引区块在 MyISAM索引文件中是一个连续访问的单元通常这个索引区块的大小和B树索引节点大小一样(索引在磁盘中是以B树结构来表示的这个树的底部时叶子节点叶子节点之上则是非叶子节点)

在索引缓存结构中所有的区块大小都是一样的这个值可能等于大于或小于表的索引区块大小通常这两个值是不一样的

当必须访问来自任何表的索引区块时服务器首先检查在索引缓存中是否有可用的缓冲区块如果有服务器就访问缓存中的数据而非磁盘就是说它直接存取缓存而不是存取磁盘否则服务器选择一个(多个)包含其它不同表索引区块的缓存缓冲区块将它的内容替换成请求表的索引区块的拷贝一旦新的索引区块在缓存中了索引数据就可以存取了

当发生被选中要替换的区块内容修改了的情况时这个区块就被认为脏了那么在替换之前它的内容就必须先刷新到它指向的标索引

通常服务器遵循LRU(最近最少使用)策略当要选择替换的区块时它选择最近最少使用的索引区块为了想要让选择变得更容易索引缓存模块会维护一个包含所有使用区块特别的队列(LRU链)当一个区块被访问了就把它放到队列的最后位置当区块要被替换时在队列开始位置的区块就是最近最少使用的它就是第一候选删除对象

共享访问索引缓存

在MySQL以前访问索引缓存是串行的两个线程不能并行地访问索引缓存缓冲服务器处理一个访问索引区块的请求只能等它之前的请求处理完结果新的请求所需的索引区块就不在任何索引缓存环冲区块中因为其他线程把包含这个索引区块的缓冲给更新了

从MySQL开始服务器支持共享方式访问索引缓存

没有正在被更新的缓冲可以被多个线程访问

缓冲正被更新时需要使用这个缓冲的线程只能等到更新完成之后

多个线程可以初始化需要替换缓存区块的请求只要它们不干扰别的线程(也就是它们请求不同的索引区块因此不同的缓存区块被替换)

共享方式访问索引缓存令服务器明显改善了吞吐量

多重索引缓存

共享访问索引缓存改善了性能却不能完全消除线程间的冲突它们仍然争抢控制管理存取索引缓存缓冲的结构为了更进一步减少索引缓存存取冲突 MySQL提供了多重索引缓存特性这能将不同的表索引指定到不同的索引缓存

当有多个索引缓存服务器在处理指定的 MyISAM表查询时必须知道该使用哪个默认地所有的 MyISAM表索引都缓存在默认的索引缓存中想要指定到特定的缓存中可以使用 CACHE INDEX语句

如下语句所示指定表的索 t t和 t引缓存到名为 hot_cache的缓存中

mysql>CACHEINDEXt t t INhot_cache;+++++|Table|Op|Msg_type|Msg_text|+++++|test t|assign_to_keycache|status|OK||test t|assign_to_keycache|status|OK||test t|assign_to_keycache|status|OK|+++++

注意如果服务器编译支持存 ISAM储引擎了那么 ISAM表也使用索引缓存机制不过 ISAM表索引只能使用默认的索引缓存而不能自定义

CACHE INDEX语句中用到的索引缓存是根据用 SET GLOBAL语句的参数设定的值或者服务器启动参数指定的值创建的如下 mysql> SET GLOBAL keycache key_buffer_size=*;想要删除索引缓存只需设置它的大小为 mysql> SET GLOBAL keycache key_buffer_size=;索引缓存变量是一个结构体变量由名字和组件构成例如 keycache key_buffer_size keycache就是缓存名 key_buffer_size是缓存组件默认地表索引在服务器启动时指定到主(默认的)索引缓存中当一个索引缓存被删掉后指定到这个缓存的所有索引都被重新指向到了默认索引缓存中去对一个繁忙的系统来说我们建议以下三条策略来使用索引缓存热缓存占用%的总缓存空间用于繁重搜索但很少更新的表冷缓存占用%的总缓存空间用于中等强度更新的表如临时表冷缓存占用%的总缓存空间作为默认的缓存用于所有其他表使用三个缓存的一个原因是好处在于存取一个缓存结构时不会阻止对其他缓存的访问访问一个表索引的查询不会跟指定到其他缓存的查询竞争性能提高还表现在以下几点原因热缓存只用于检索记录因此它的内容总是不需要变化所以无论什么时候一个索引区块需要从磁盘中引入被选中要替换的缓存区块的内容总是要先被刷新索引被指向热缓存中后如果没有需要扫描全部索引的查询那么对应到B树中非叶子节点的索引区块极可能还保留在缓存中在临时表里必须频繁执行一个更新操作是相当快的如果要被更新的节点已经在缓存中了它无需先从磁盘中读取出来当临时表的索引大小和冷缓存大小一样时那么在需要更新一个节点时它已经在缓存中存在的几率是相当高的

中点插入策略

默认地 MySQL的索引缓存管理系统采用LRU策略来选择要被清除的缓存区块不过它也支持更完善的方法叫做中点插入策略

使用中点插入策略时 LRU链就被分割成两半一个热子链一个温子链两半分割的点不是固定的不过缓存管理系统会注意不让温子链部分太短总是至少包括全部缓存区块的 key_cache_division_limit比率 key_cache_division_limit是缓存结构体变量的组件部分因此它是每个缓存都可以设置这个参数值

当一个索引区块从表中读入缓存时它首先放在温子链的末尾当达到一定的点击率(访问这个区块)后它就提升到热子链中去目前要提升一个区块的点击率()对每个区块来说都是一样的将来我们会让点击率依靠B树中对应的索引区块节点的级别包含非叶子节点的索引区块所要求的提升点击率就低一点包含叶子节点的B索引树的区块的值就高点

提升起来的区块首先放在热子链的末尾这个区块在热子链内一直循环如果这个区块在该子链开头位置停留时间足够长了它就会被降级回温子链这个时间是由索引缓存结构体变量的组件 key_cache_age_threshold值来决定的

这个阀值是这么描述的一个索引缓存包含了 N个区块热子链开头的区块在低于 N*key_cache_age_threshold/次访问后就被移动到温子链的开头位置它又首先成为被删除的候选对象因为要被替换的区块还是从温子链的开头位置开始的

中点插入策略就能在缓存中总能保持更有价值的区块如果更喜欢采用LRU策略只需让 key_cache_division_limit的值低于默认值

中点插入策略能帮助改善在执行需要有效扫描索引它会将所有对应到B树中高级别的有价值的节点推出的查询时的性能为了避免这样就必须设定 key_cache_division_limit远远低于以采用中点插入策略则在扫描索引操作时那些有价值的频繁点击的节点就会保留在热子链中了

索引预载入

如果索引缓存中有足够的区块用来保存全部索引或者至少足够保存全部非叶子节点那么在使用前就载入索引缓存就很有意义了将索引区块以十分有效的方法预载入索引缓存缓冲从磁盘中顺序地读取索引区块

没有预载入查询所需的索引区块仍然需要被放到缓存中去虽然索引区块要保留在缓存中因为有足够的缓冲它们可以从磁盘中随机读取到而非顺序地

想要预载入缓存可以使用 LOAD INDEX INTO CACHE语句如下语句预载入了表 t和 t的索引节点(区块)

mysql>LOADINDEXINTOCACHEt t IGNORELEAVES;+++++|Table|Op|Msg_type|Msg_text|+++++|test t|preload_keys|status|OK||test t|preload_keys|status|OK|+++++

增加修饰语 IGNORE LEAVES就只预载入非叶子节点的索引区块因此上述语句加载了 t的全部索引区块但是只加载 t的非叶子节点区块

如果使用 CACHE INDEX语句将索引指向一个索引缓存将索引区块预先放到那个缓存中去否则索引区块只会加载到默认的缓存中去

索引缓存大小

MySQL引进了对每个索引缓存的新变量 key_cache_block_size这个变量可以指定每个索引缓存的区块大小用它就可以来调整索引文件I/O操作的性能

当读缓冲的大小和本地操作系统的I/O缓冲大小一样时就达到了I/O操作的最高性能了但是设置索引节点的大小和I/O缓冲大小一样未必能达到最好的总体性能读比较大的叶子节点时服务器会读进来很多不必要的数据这大大阻碍了读其他叶子节点

目前还不能控制数据表的索引区块大小这个大小在服务器创建索引文件 ` MYI时已经设定好了它根据数据表的索引大小的定义而定在很多时候它设置成和I/O缓冲大小一样在将来可以改变它的值并且会全面采用变量 key_cache_block_size

重建索引缓存

索引缓存可以通过修改其参数值在任何时候重建它例如

mysql>SETGLOBALcold_cache key_buffer_size=**;

如果设定索引缓存的结构体变量组件变量 key_buffer_size或 key_cache_block_size任何一个的值和它当前的值不一样服务器就会清空原来的缓存在新的变量值基础上重建缓存如果缓存中有任何的脏索引块服务器会先把它们保存起来然后才重建缓存重新设定其他的索引缓存变量并不会重建缓存

lishixinzhi/Article/program/Oracle/201311/16615

mysql数据库维护和mysql的特点是什么的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

数据库有哪几种 数据库分为哪几类服务器 pe,dell服务器按什么键进入PE