mysql memory优点_第2章 什么影响了MySQL性能

什么影响了mysql的性能

服务器硬件

操作系统

引擎选择

数据库参数的配置

表的设计和sql语句

一般来说数据的参数的配置是非常重要的

f1e6661c42ca?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

20180827224542.png

如何选择CPU

CPU密集型,选择更好的数据库而不是更多的CPU

并发量多的,cpu的数量越多越好

在web中,cpu的数量比性能重要

内存

如果内存的数量大于缓存的话,利用率就不是太高了。

买内存的时候,内存最大的,买相同的内存。

磁盘的配置和选择

机械硬盘

如何选择

容量

传输速度

访问时间

转速

物理尺寸

RAID

什么是RAID?

将多个小的磁盘,组合成一个大的磁盘!并提供数冗余来保证数据的完整性。

RAID 0

1535423181969.jpg

什么是 RAID 0

1535423278960.jpg

RAID 0的实现方式

磁盘一旦损坏,数据就找不到了。

读比 RAID 1 快

RAID 1

1535423354658.jpg

RAID 1

1535423384961.jpg

RAID 1 示例图

注意,磁盘坏了,立马更换。

RAID 5

1535423506137.jpg

什么是RAID 5

1535423542903.jpg

示例图

随机写慢,但是读快。适合方从数据库

RAID 10

数据库的最好选择,成本比较高

1535423647531.jpg

介绍

1535423673155.jpg

示例图

总结

1535423719359.jpg

enter description here

固态硬盘

优缺点

有更好的读写能力

更好的支持并发

但是更容易损坏

特点

1535423841709.jpg

固态硬盘的特点

网络存储的使用场景

适合做数据库备份。

1535423941774.jpg

SNA和NAS

1535423997703.jpg

NAS

网络对性能的影响

1535424061045.jpg

建议

Centos 参数优化

1535424994239.jpg

enter description here

1535425005972.jpg

决定每个端口最大的监听长度,默认很小,对负载很大的数据是不行的

1535425096596.jpg

接受包的速率比内核处理快的时候,准许往队列中发送包的最大的数据木

1535425111108.jpg

enter description here

MySQL

mysql引起的介绍

MYISAM

特性1:

并发性与锁级别

MYISAM 使用的是表级锁,而不是行级锁!这就导致读取和写入是相斥的,对续写能敌的处理不是很好,并发性不好,但是对于只读的话,还是不错的。

特性2:

表损坏(意外关闭造成的损坏)和修复

check table 检查

repair table 修复

特性3

支持全文索引

可以建立前缀索引

可以进行压缩

当数据只读的时候,只能读不能写

限制:

版本小于5.0,单表最大是4G

版本大于5.0,单表最大事256T

实用场景:

非事物应用

只读类应用(压缩)

空间类应用(GPS,空间函数)

INNODB

5.5版本之后默认成Innodb数据库引擎

有自己的表空间,使用表空间进行存储

为每一个表建立独立的表空间

系统表空间和独立表空间如何选择

系统表空间容易造成空间浪费,会有I/O瓶颈

独立表空间,可以向多个文件删除。

建议: 使用独立表空间

数据库5.6版本默认的是独立表空间

系统空间变成独立表空间的办法

导出数据

停止服务,修改参数,并且删除Innodb相关参数

重启服务,重建Innodb独立表空间

导入数据

特性 1:

是事物特性表

完全支持ACID特性

Redo log 和undo log(独立存在的,可以将其放入到SSD,来提高数据库性能)

undo log未提交的事物

Redo log 已经提交的事物

什么是锁?

管理资源并发访问

一个人提交数据,另一个人阻塞

实现事物的隔离性

锁类型?

共享锁(读锁)

独占锁(写锁)

锁的粒度

锁的最小单位,如行级锁,表级锁

阻塞和死锁?

阻塞

一个锁需要等另一个锁资源释放

死锁

两个锁资源互相占用。这个课由系统自动处理,但是如果是大量的数据的话,就不好了。

特性3 :

状态检查

show engine innodb status

注意要隔离30s,

可以检查缓存、读写、循环次数、log信息、缓存池、内存信息等。

适用场景:

使用大多数的OLTP应用

5.6支持了全文索引和空间函数

CVS引擎

特点:

以文件形式存储的

.cvs 表内容

csm 表状态

frm 表结构

特点:

1.以csv格式进行存储

2.不能出现null的列

3.不支持索引

4.可以对文件直接编辑

适用场景

数据中间交换表,如电子表格等

Archive引擎

特点:

1.缓存所有的写,并对缓存进行压缩。更加节约磁盘I/O和内存

2.数据已ARZ后缀访问文件

特点2:

1.只支持insert和select操作

2.支持行级锁

3.只允许在自增id上建立索引

适用场景:

日志和数据采集

memory数据库引擎

特点:

1.数据保存在内存中

2.支持HASH(等值查找)和BTress(范围查找)索引

3.所有字段都是定长

4.不支持大字段

5.是一个表级锁,并发不好!

适用场景

1.映射表,如邮编和地区

2.保存数据分析产生的中间表

3.用于缓存周期性聚合数据表

不能用于主从复制,因为每次主服务器上都会从新生成!副从服务器上的就不能用了。

federated

特点:

提供了mysql服务器访问远程服务器的方法

本地不存放数据,数据都在远程数据库里存放着

本地保存表结构和远程的服务器信息

当前的数据库默认是禁止的

适用场景

偶尔的统计拆分可以使用。

如何选择数据库引擎

一般选择Innodb就可以了。

参考条件 :事物、备份、特性、崩溃恢复

建议:不同的数据库引擎,尽量不要混合使用

MySql服务器配置

内存配置的相关参数

sotr_buffer_size

确定可以使用内存的上限,确定mysql每个链接使用的内存

join_buffer_size

链接缓存区的大小,一个查询关联多个表,那么就会给每个关联分配一个机制

read_buffer_size

MYSIM全局扫描时候,分配的读取缓存区的大小。

read_rnd_buffer_size

索引缓存区的大小

要注意确认为操作系统留多少内存。

如何分配缓存池内存

Innodb_buffer_prol_size 定义Innodb使用缓存池的大小

算法:

池的大小 --> 总内存-(线程内存*连接数)-系统内存。

key_buffer_size :MYSIM缓存池的大小,注意存放索引

Innodb_flush_log_at_trx_commit.png

enter description here

MySAM.png

enter description here

1535450875996.jpg

mysql 安全参数的配置

1535450910467.jpg

MYSQL安全参数2

1535450929099.jpg

Mysql安全参数3

Sql_mode.png

enter description here

1535450962152.jpg

其他参数的配置

1535450979650.jpg

其他参数的配置2

数据库设计对性能的影

过分的反范式化为表建立太多的列

过分的范式化造成太多的表关联

在OLTP中使用不恰当的分区表

使用外键保证数据的完整性

对有外键的表进行修改时候,mysql都要对外键应用进行检查,这样就带来了额外的锁的开销,降低了数据库的修改效率!

建议尽量不使用外键约束,但是在关联键上建立相关的索引还是必须的。

性能优化的顺序

数据库接口和sql语句

数据库引擎的选择和参数的配置

系统选择和优化

硬件的升级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值