数据库如何优化

数据库如何优化,第1张

body{

line-height:200%;

}

如何优化MySQL数据库

当MySQL数据库邂逅优化,它有好几个意思,今天我们所指的是性能优化。

我们究竟该如何对MySQL数据库进行优化呢?下面我就从MySQL对硬件的选择、Mysql的安装、mycnf的优化、MySQL如何进行架构设计及数据切分等方面来说明这个问题。

1服务器物理硬件的优化

1)磁盘(I/O),MySQL每一秒钟都在进行大量、复杂的查询 *** 作,对磁盘的读写量可想而知,所以推荐使用RAID1+0磁盘阵列,如果资金允许,可以选择固态硬盘做RAID1+0;

2)cpu对Mysql的影响也是不容忽视的,建议选择运算能力强悍的CPU。

2MySQL应该采用编译安装的方式

MySQL数据库的线上环境安装,我建议采取编译安装,这样性能会较大的提升。

3MySQL配置文件的优化

1)skip

-name

-resolve,禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间;

2)back_log

=

384,back_log指出在MySQL暂时停止响应新请求之前,短时间内的多少个请求可以被存在堆栈中,对于Linux系统而言,推荐设置小于512的整数。

3)如果key_reads太大,则应该把mycnf中key_buffer_size变大,保持key_reads/key_read_requests至少在1/100以上,越小越好。

4MySQL上线后根据status状态进行适当优化

1)打开慢查询日志可能会对系统性能有一点点影响,如果你的MySQL是主-从结构,可以考虑打开其中一台从服务器的慢查询日志,这样既可以监控慢查询,对系统性能影响也会很小。

2)MySQL服务器过去的最大连接数是245,没有达到服务器连接数的上限256,应该不会出现1040错误。比较理想的设置是:Max_used_connections/max_connections

100%

=85%

5MySQL数据库的可扩展架构方案

1)MySQL

cluster,其特点为可用性非常高,性能非常好,但它的维护非常复杂,存在部分Bug;

2)DRBD磁盘网络镜像方案,其特点为软件功能强大,数据可在底层块设备级别跨物理主机镜像,且可根据性能和可靠性要求配置不同级别的同步。

这个非常简单,MySQL数据库的用户信息、数据库信息和登录IP信息通常都保存在系统数据库中,可以直接经过查询得到,下面我简单介绍一下,以MySQL55为例:

用户信息

这个主要保存在mysql数据库的user表中,通常修改用户的密码、删除用户及分配权限等就是在这个表进行,下面我简单介绍一下:

查询所有用户

这个直接执行“selectuser,hostfromuser;”语句就行,如下,第一列为用户名,第二列为允许登录的IP,%表示任意IP都可登录,localhost则只允许本地登录:

查询用户权限

这个直接执行“showgrantsfor'user'@'host';”命令就行,如下,以root用户为例,则直接执行“showgrantsfor'root'@'localhost';”命令,all表示所有权限,select表示只查权限,update表示只改权限,delete表示只删权限等:

数据库信息

这个主要保存在information_schema数据库中,它通常保存着MySQL数据库所维护的所有数据库信息,包括数据库名,数据表名,表栏的数据类型与访问权限等,下面我简单介绍一下:

查询所有数据库

这个直接执行“showdatabases;”命令就行,如下,会列出当前MySQL数据库中存储的所有数据库,查看某一个数据库下所有数据表的话,执行“showtables;”命令就行:

查看数据库大小

以test数据库为例,计算单位为MB,直接执行“selectconcat(round(sum(data_length)/(10241024),2)+round(sum(index_length)/(10241024),2),'MB')as'DBSize'fromtableswheretable_schema='test';”命令就行,如下:

查看数据库编码

这个直接执行“showvariableslike'character%';”命令就行,如下,character_set_client为客户端编码,character_set_connection为建立连接编码,character_set_database为数据库编码,character_set_results为结果集编码,character_set_server为数据库服务器编码;

登录IP信息

这里通常是查看连接MySQL数据库的IP信息,统计每个IP的连接数,执行“selectSUBSTRING_INDEX(host,':',1)asip,count()frominformation_schemaprocesslistgroupbyip”命令就行,如下,第一列为IP地址,第二列为该IP下的连接数:

至此,我们就完成了查询MySQL数据库的用户信息、数据库信息和登录IP信息。总的来说,整个过程非常简单,只要你有一定的MySQL基础,熟悉一下相关文档和说明,很快就能掌握的,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。

在使用MySQL数据库的时候,都碰到过因断电造成数据库损坏的情况,大家都知道,断电或非正常关机是导致MySQL数据库出现错误最常见的原因,如何恢复MySQL数据库是大家都非常头痛的问题。目前有方法可以帮助大家恢复损坏的MySQL数据库吗?

当用户出现断电造成的MySQL数据库丢失损坏时,如果能进入MySQL软件,但是提示错误信息,用户可以通过“系统维护”—“数据库压缩修复”,压缩下数据库(有些软件在“系统设置”—“系统维护”—“数据库备份\恢复”中),这种方法只适合一小部分的数据库故障修复,功能性并不高。

现在网络上有两种比较推荐使用的MySQL数据库恢复方法,一种方法使用MySQL(和PHP搭配之最佳组合)的check table和repair table 的sql语句,另一种方法是使用MySQL(和PHP搭配之最佳组合)提供的多个myisamchk, isamchk数据检测恢复工具。在很多用户看来,这两个方法都比较复杂,并不适合大多数的用户使用。另外,这两种方法并不能有效的恢复MySQL数据库,可能还会造成数据库被进一步损坏,造成大家无法挽回的损失。根据以上几个原因,这两种MySQL数据库恢复方法并不建议大家使用。

数据库被损坏分以下几种情况:

1、严重损坏

2、轻度损坏

3、有些表被损坏或有些表的部分记录被损坏

我们都知道,服务器数据库的开发一般都是通过java或者是PHP语言来编程实现的,而为了提高我们数据库的运行速度和效率,数据库优化也成为了我们每日的工作重点,今天,沙河IT培训就一起来了解一下mysql服务器数据库的优化方法。

为什么要了解索引

真实案例

案例一:大学有段时间学习爬虫,爬取了知乎300w用户答题数据,存储到mysql数据中。那时不了解索引,一条简单的“根据用户名搜索全部回答的sql“需要执行半分钟左右,完全满足不了正常的使用。

案例二:近线上应用的数据库频频出现多条慢sql风险提示,而工作以来,对数据库优化方面所知甚少。例如一个用户数据页面需要执行很多次数据库查询,性能很慢,通过增加超时时间勉强可以访问,但是性能上需要优化。

索引的优点

合适的索引,可以大大减小mysql服务器扫描的数据量,避免内存排序和临时表,提高应用程序的查询性能。

索引的类型

mysql数据中有多种索引类型,primarykey,unique,normal,但底层存储的数据结构都是BTREE;有些存储引擎还提供hash索引,全文索引。

BTREE是常见的优化要面对的索引结构,都是基于BTREE的讨论。

B-TREE

查询数据简单暴力的方式是遍历所有记录;如果数据不重复,就可以通过组织成一颗排序二叉树,通过二分查找算法来查询,大大提高查询性能。而BTREE是一种更强大的排序树,支持多个分支,高度更低,数据的插入、删除、更新更快。

现代数据库的索引文件和文件系统的文件块都被组织成BTREE。

btree的每个节点都包含有key,data和只想子节点指针。

btree有度的概念d>=1。假设btree的度为d,则每个内部节点可以有n=[d+1,2d+1)个key,n+1个子节点指针。树的大高度为h=Logb[(N+1)/2]。

索引和文件系统中,B-TREE的节点常设计成接近一个内存页大小(也是磁盘扇区大小),且树的度非常大。这样磁盘I/O的次数,就等于树的高度h。假设b=100,一百万个节点的树,h将只有3层。即,只有3次磁盘I/O就可以查找完毕,性能非常高。

索引查询

建立索引后,合适的查询语句才能大发挥索引的优势。

另外,由于查询优化器可以解析客户端的sql语句,会调整sql的查询语句的条件顺序去匹配合适的索引。

以上就是关于数据库如何优化全部的内容,包括:数据库如何优化、mysql数据库怎么使用,mysql的使用方法、如何修复MYSQL数据库因断电造成的数据损坏等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/10138398.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存