精华内容
下载资源
问答
  • mysql配置参数调优(8GB内存和64GB内存)

    千次阅读 2019-09-11 22:33:26
    文章目录一、前言二、查看服务器的CPU和内存1、查看CPU的个数2、查看服务器的内存3、数据库版本三、64GB内存的mysql配置参数四、本机8GB内存的mysql配置参数1、查看数据库版本2、具体的配置参数五、总结1、数据库...

    一、前言

          我们新搭建一个LNMP环境之后该如何设置配置文件来达到最佳性能呢?众所周知,mysql的默认配置参数性能是比较底下的,如果我们的服务器配置比较高,那么势必发挥不出来mysql的真正性能。所以,我们必须要设置合适的mysql参数来达到最完美的性能,最起码不能拖了后腿。

    二、查看服务器的CPU和内存

          博主在配置完LNMP之后,也是一时之间有些恍惚,虽然知道要设置mysql的内存参数,设置连接数之类的,但是一时还真不知道该从何处下手。所幸公司有专门的mysql服务器,并且参数都是经过DBA设置过的,性能强劲,不如咱们就参考mysql服务器上的配置,从而对比咱们的服务器配置,设计出适合咱们mysql的一套配置参数。

    下面先查询出来mysql服务器的配置,方便作为对比:

    1、查看CPU的个数

     //查看逻辑CPU的个数
    cat /proc/cpuinfo| grep "processor"| wc -l            
    40
    
     //查看物理CPU的个数
    cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l   数
    2
    
    //查看物理CPU的内核数
     cat /proc/cpuinfo | grep "cores" | uniq 		//查看物理CPU的内核数
    cpu cores	: 10
    

    (1)物理cpu数: 主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id)

    (2) cpu核数: 单块CPU上面能处理数据的芯片组的数量,如双核、四核等 (cpu cores)

    (3)逻辑cpu数: 一般情况下,逻辑cpu=物理CPU个数×每颗核数,如果不相等的话,则表示服务器的CPU支持超线程技术(HT:简单来说,它可使处理器中的1 颗内核如2 颗内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能,此时逻辑cpu=物理CPU个数×每颗核数x2

          也就是说,实际用到的核数是:40 /2 = 20核 ,比着上面的10核多,相当于服务器支持CPU超线程技术

    2、查看服务器的内存

    grep MemTotal /proc/meminfo
    MemTotal:       65936452 kB             //大概是62.8G,也就是64G的机器
    

    3、数据库版本

    select version();
    +------------+
    | version()  |
    +------------+
    | 5.6.34-log |
    
    

          OK,根据咱们上面的这些操作,已经知道公司的Mysql服务器配置是:10核64GB内存的。

    三、64GB内存的mysql配置参数

    
    show global variables like 'key_buffer_size';  					256M
    
    show global variables like 'max_allowed_packet';  				32M
    
    show global variables like 'table_open_cache';  				16384	
    
    show global variables like 'sort_buffer_size';  				32M
    
    show global variables like 'net_buffer_length'; 				16384
    
    show global variables like 'read_buffer_size'; 					16M
    
    show global variables like 'read_rnd_buffer_size';				32M
    
    show global variables like 'myisam_sort_buffer_size';			128M  
    (经常需要调用临时表,所以大了一些)
    
    show global variables like 'thread_cache_size';					64
    
    根据物理内存设置规则如下:
    1G ---> 8
    2G ---> 16
    3G ---> 32
    >3G ---> 64
    
    show global variables like 'query_cache_size';					0 
    
    当开启了 Query Cache 之后,尤其是当我们的 query_cache_type 参数设置为 1 以后,
    MySQL 会对每个 SELECT 语句都进行Query Cache 查找,查找操作虽然比较简单,
    但仍然也是要消耗一些 CPU 运算资源的。而由于 Query Cache 的失效机制的特性,
    可能由于表上的数据变化比较频繁,大量的 Query Cache 频繁的被失效,所以 
    Query Cache 的命中率就可能比较低下。所以有些场景下
    ,Query Cache 不仅不能提高效率,反而可能造成负面影响。 
    
    参考:https://blog.csdn.net/u014044812/article/details/78924315
    
    show global variables like 'tmp_table_size';					128M  
    //临时表相关,不常用的话可以小一点
    
    show global variables like 'explicit_defaults_for_timestamp';	ON  
    //是否显示默认时间戳
    
    show global variables like 'max_connections';					100000  
     //最大连接数,并发连接数
    
    show global variables like 'max_connect_errors';				10000000  
    
    show global variables like 'open_files_limit';					500000  
    //mysql打开最大文件数
    
    show global variables like 'expire_logs_days';					10
    启用二进制日志后,保留日志的天数。
    
    show global variables like 'innodb_file_per_table';				ON
    
    
    show global variables like 'innodb_data_file_path';				ibdata1:1G:autoextend
    用来容纳InnoDB为数据表的表空间: 可能涉及一个以上的文件; 每一个表空间文件
    的最大长度都必须以字节(B)、兆字节(MB)或千兆字节(GB)为单位给出; 
    表空间文件的名字必须以分号隔开; 最后一个表空间文件还可以带一个autoextend
    属性和一个最大长度(max:n)。
    
    ===innodb引擎相关配置====
    
    show global variables like 'innodb_buffer_pool_size';           32G
    
    show global variables like 'innodb_log_file_size'; 				4G  
    //事务日志文件写操作缓存区的最大长度
    
    show global variables like 'innodb_log_buffer_size'; 			64M  
    //经常用到事务的场景,这个值应该大一些
    
    show global variables like 'innodb_flush_log_at_trx_commit'; 	2  
    这个参数要配合sync_binlog参数来设置,在设置为:
    innodb_flush_log_at_trx_commit=2 
    sync_binlog=1000
    mysql的写入性能最高,可以参考:https://www.jianshu.com/p/74b03a792ff8
    
    
    show global variables like 'innodb_lock_wait_timeout';			30s
    
    show global  variables like 'back_log';							4096   	
    //参考:https://www.cnblogs.com/angryprogrammer/p/6667741.html
    
    

    注意:以上参数均为博主计算后的数额,通过show variables查出来的数值都是以字节为单位,这块大家自己到时候自己转换一下就行,博文为了方便展示,故而选用MB来展示。

          上面这些参数是影响mysql服务器性能的主要原因,关于这些参数的具体含义,大家可以参考:MariaDB/MySQL配置文件my.cnf解读 ,注释部分只是列出来部分参数的含义,建议是先弄懂各个参数的含义再对比设置会比较好。

    四、本机8GB内存的mysql配置参数

          咱们的服务器是2核8G,当然是不能像专门的数据库服务器一样,绝大部分内存都分配给mysql,由于业务会有大量的连接,所以决定留下一半的内存给mysql,也就是4GB。剩下的4GB内存交给服务器的线程。

    1、查看数据库版本

    MariaDB [(none)]> select version();
    +--------------------------+
    | version()                |
    +--------------------------+
    | 10.1.41-MariaDB-0+deb9u1 |
    +--------------------------+
    

          这个版本具有MySQL 5.65.7的后端和重新实现的功能,可以参考文档:https://mariadb.com/kb/en/library/mariadb-10141-release-notes/
    不过网上有种说法是10.1-35.7对应,也就是说咱们这个版本也是对标的mysql5.7

    2、具体的配置参数

    show global variables like 'key_buffer_size';  		64M 	//默认16M		//64G的机器设置:256M
    
    show global variables like 'max_allowed_packet';  	32M  	// 默认16M		//64G的机器设置:32M
    
    show global variables like 'table_open_cache';  	2048	// 默认2000		//64G的机器设置:16384	
     
    show global variables like 'sort_buffer_size';  	4M		//默认是2M		//64G的机器设置:32M
    
    show global variables like 'net_buffer_length'; 	 16384  //默认16384		//64G的机器设置:16384
    
    show global variables like 'read_buffer_size'; 	   1M       //默认128k		//64G的机器设置:16M
    
    show global variables like 'read_rnd_buffer_size';	512k	//默认256k		//64G的机器设置:32M
    
    show global variables like 'myisam_sort_buffer_size';128M  	//默认128M		//64G的机器设置:128M
    
    show global variables like 'thread_cache_size';		64		//默认8			//64G的机器设置:64
    
    show global variables like 'query_cache_size';	0 			//默认16M		//64G的机器设置:0
    
    show global variables like 'tmp_table_size';		32M  	//默认16M		//64G的机器设置:128M
    
    show xx like 'explicit_defaults_for_timestamp';	 ON		    //默认OFF		//64G的机器设置:ON
    
    show global variables like 'max_connections';		5000 	//默认151		//64G的机器设置:100000
    
    show global variables like 'max_connect_errors';	500000  //默认100		//64G的设置:10000000
    
    show global variables like 'open_files_limit';		65535	//默认4184		//64G的机器设置:500000	
    
    show global variables like 'expire_logs_days';		10		//默认10			//64G的机器设置:10
    
    show global variables like 'innodb_file_per_table';	ON		//默认ON			//64G的机器设置:ON
    
    show global variables like 'innodb_data_file_path';	64M		//默认12M   		//64G的机器设置:1G
    
    ===innodb相关====
    
    show global variables like 'innodb_buffer_pool_size';   2G	//默认128M   	//64G的机器设置:32G
    
    show global variables like 'innodb_log_file_size'; 	256M	//默认48M   		//64G的机器设置:4G
    
    show global variables like 'innodb_log_buffer_size'; 32M	//默认16M   		//64G的机器设置:64M
    
    show xx like 'innodb_flush_log_at_trx_commit'; 		2  		//默认1   		//64G的机器设置:2
    
    show global variables like 'sync_binlog';		1000		//默认0   		//64G的机器设置:1000
    
    show global variables like 'innodb_lock_wait_timeout';30s	//默认50   		//64G的机器设置:30
    
    show global  variables like 'back_log';				500		//默认80			//64G的机器设置:4096
    

    (PS:对齐实在是太难了,这个样式调了老半天。。)

          mysql的参数很多,但主要影响性能的就是上面这些,针对大部分的情况(中小型业务),修改这些设置可以有效提升mysql的性能,其他的设置
    用默认的就可以。关于查看mysql各种性能指标,可以参考:通过查看mysql 配置参数、状态来优化你的mysql

    五、总结

          通过对比可以看到,mysql有些默认的值实在是太小了,根本发挥不出来机器的性能。明明内存那么大,结果却放着不用,这性能也是非常糟糕了。还有innodb_flush_log_at_trx_commitsync_binlog,这两个默认的设置恰恰是写入性能最低的搭配。

    1、数据库偏向于写操作

          具体的配置还是要根据自己数据库的偏好来的,如果数据库用到的事务比较多,那么建议加大事务相关的配置。如果更偏向于写并且表很大的话,要增加表空间大小,并且增加缓冲区大小,同时事务相关的也要大一些,因为每次插入也是要经过事务处理的,主要是innodb_log_file_size参数要设置的大一些。

    2、数据库偏向于读操作

          如果是更偏向于读,那么事务相关的空间可以小一些,table_open_cacheopen_files_limit也可以设置的大一些,当 Mysql 访问一个表时,如果该表在缓存中已经被打开,则可以直接访问缓存。临时表空间可以适当增大,因为大数据量的查询,用到临时表也很正常,还有read_buffer_size等参数也要注意。

    3、补充

    以上更多的是一种大致的建议,设计要设置的参数很多,偏重于读或者写的配置侧重点也是不同的,大家先了解各个配置代表的意思,这样就能设计出最合适自己机器的配置了。

          根据上面的分析,我们可以发现,mysql的性能是根据不同的配置而变化的,并不是单一的调大某个参数,性能就能来个飞速上涨。还是木桶原理,木桶能装多少水,取决的是最短的那个板子,我们只能尽量让板子都均衡一些,尽量多装一些水而已。

    end

    展开全文
  • 其中,iPhone 12iPhone 12 Max将使用4GB内存,iPhone 12 ProiPhone 12 Pro Max将使用6GB内存。 在AppleInsider发布新闻之后,新闻大师乔恩·普罗瑟(Jon Prosser)也确认该新闻是真实的。但是,应该注意,...

    每年发布新iPhone之后,硬件中最神秘的部分是内存。既然尚未发布iPhone 12系列,内存新闻已经来临。外媒AppleInsider表示,iPhone 12系列将具有两种类型的存储容量,分别为4GB和6GB。其中,iPhone 12和iPhone 12 Max将使用4GB内存,iPhone 12 Pro和iPhone 12 Pro Max将使用6GB内存。

    在AppleInsider发布新闻之后,新闻大师乔恩·普罗瑟(Jon Prosser)也确认该新闻是真实的。但是,应该注意,AppleInsider的新闻内容来自Twitter用户“ L0vettodream”。用户没有明确地将iPhone 12系列称为4GB和6GB的内存,而是模糊地称为“ Professional 6GB General 4GB”,这是专业版本。 6GB,标准版4GB,没有提及Apple。


    iPhone 12

    iPhone维修

    AppleInsider认为L0vettodream曾多次披露过Apple产品信息,并且准确性非常高,因此相信此消息与iPhone 12内存有关。

    展开全文
  • GB和GiB的区别

    万次阅读 2015-10-18 08:56:56
    他们与GB、MB、KB是不一样的,GB等则是1000进位的数据单位。 根据Wikipedia的注译,GB(gigabyte)是十进制的容量单位,1GB等于1,000,000,000 Bytes。而二进制的容量单位则是用GiB(Gibibyte)就是Giga ...

    Gibibyte(giga binary byte的缩写)是信息或计算机硬盘存储的一个单位,简称GiB。由来“GiB”、“KiB”、“MiB”等是于1999年由国际电工协会(IEC)拟定了"KiB"、“MiB”、“GiB"的二进制单位,专用来标示“1024进位”的数据大小。而后,这一标注规范又于2008年并入国际标准化组织(ISO)文件。具体的来说,1GiB=1024MiB,1MiB=1024KiB。他们与GB、MB、KB是不一样的,GB等则是1000进位的数据单位。


    根据Wikipedia的注译,GB(gigabyte)是十进制的容量单位,1GB等于1,000,000,000 Bytes。而二进制的容量单位则是用GiB(Gibibyte)就是Giga Binary Byte,相等于1,073,741,824 Bytes。

    所以一个160GB的硬盘其实只有149.0116119 GiB,厂商并没有欺骗顾客,更由于无法精确控制盘面的容量,大多数时候都会提供多余的空间以确保品质。


    以下示范如何换算成GiB:
    160,000,000,000 /1,073,741,824 =149.0116119 GiB




    展开全文
  • 电脑的运行内存4GB够不够用

    千次阅读 2018-01-30 12:05:11
    手机的运行内存都普遍达到2GB的时代,电脑的运行内存4GB够不够用? 那要看你是要用来干什么了。
    展开全文
  • 使 32 位程序使用大于 2GB内存

    千次阅读 2017-09-14 23:54:50
    不管在 32 位 Windows 上还是在 64 位 Windows 上,32 位的应用程序都只能使用最大 2GB内存,这是我们司空见惯的一个设定。但其实 Windows 提供了一些方法让我们打破这样的设定,使程序使用大于 2GB内存
  • 作者简洁 作者:大家好,我是帅地,从大学、自学一路走来,深知算法,计算机基础知识的重要性,所以申请了一个微星公众号『帅地玩编程』,专业于写这些底层知识,提升我们的内功,帅地期待你的关注,我一起学习。...
  • 问题如图:64位系统已经安装了4G内存,却在括号内显示3.87GB可用? 正常情况下如图:仅显示已安装的内存为8G,后面没有括号提示! 实际分析:    排除硬件保留内存寻址可能 Windows 将部分内存保留为硬件...
  • Linux以GB显示内存大小

    千次阅读 2015-03-16 22:51:28
    Linux以GB显示内存大小 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -g total used free shared buffers cached Mem: 2 1 1 0
  • 现在又加8G的内存条,就出现现在这种情况: 已安装内存:16.0GB(3.93GB可用) 按照网上给的步骤 win+R 打开运行 输入msconfi,找到引导页面,勾选如下的最大内存重启,没有用。 查询主机处理器时接受扩展的...
  • 众所周知32位Windows 7系统最大只能识别4GB内存,并且可用内存最多为3.25GB. 但是32位的Windows Server 2003/2008却可以使用4GB以上内存,原因就在于这个系统可以利用x86的PAE特性。 然而默认情况Windows 7却无法...
  • GiB 与 GB区别

    千次阅读 2020-05-15 00:04:55
    目录GiBGB起因及参考参考文章误会 GiB 1 GiB = 1024 MiB 1 MiB = 1024 KiB 1 KiB = 1024 Bytes GB 1 GB = 1000 MB 1 MB = 1000 KB 1 KB = 1000 Bytes ...GB和GiB的区别 单位GB和GiB的分别 KB / KiB,MB /
  • 二代内存与三代内存区别

    千次阅读 2013-08-30 13:09:47
    二代内存与三代内存区别 二代内存与三代内存区别 首先从频率上就可以看出,举个例子DDR3 1333比DDR2 800频率要高很多,传输速率加快这就是最大的区别,DDR3 1333的频率是1333MHZ,而DDR2 800才800MHZ个人PC机支持的...
  • AWE /3GB 内存扩展技术

    千次阅读 2013-12-12 14:11:54
    Address WindowingExtensions Widnows中的Address WindowingExtensiongs功能允许应用程序存取超过4GB的物理内存...32位的指针是一个整型,只能够存储小于等于0xFFFFFFFF的值,因此只能够引用一个4GB的线性内存地址
  • 分页内存和非分页内存区别

    千次阅读 2010-01-26 09:55:00
    在写驱动的时候,经常要调用ExAllocatePoolWithTag函数分配内存,其中第一个参数可以是如下几个: NonPagedPool从非分页内存池中分配内存PagedPool从分页内存池中分配内存NonPagedPoolMustSucceed从非分页内存池中...
  • 报如下错误:2.1 GB of 2.1 GB virtual memory used. Killing container 1.在etc/hadoop/yarn-site.xml文件中,修改检查虚拟内存的属性为false,如下:   <property> <name>yar.....
  • 前言 <br /> 500元、300元、150元......... <br /> 无论是WinXP-32bit还是Vista-32bit,所有的用户都可以发现自己的任务管理器中最多只显示3.25GB物理内存,更甚者还会有2.8GB甚至更低的数值出现。
  • 大神请给讲讲,还有就是 linux 中内存的机制window有区别吗 ?
  • 群晖Synology 218+拆机升级内存12GB

    千次阅读 2020-07-14 21:23:49
    这里写自定义目录标题前言拆机 ...默认出厂的内存2 G...连gitlab 都跑不起来。。。唯一的方法就是升级内存。 其他网友参考地址:https://www.yleee.com.cn/forum.php?mod=viewthread&tid=61515&aid=3874
  • Gb和GB的不同

    千次阅读 2018-06-29 14:03:51
    例: 这里的指包含4个DDR,每个大小4Gb(512M),总内存大小为2G; 1GB = 1024M Byte; 1Gb = 1024M bit=(1024\8)M=128M;
  • 最近测试一个32位程序总是在1.2G左右内存时崩溃,怀疑是内存申请失败,本身32位程序只能申请到2GB内存,经过在网上找的各种方法测试,如下方法可行,能申请到4GB内存。 1、管理员模式下运行CMD,输入:BCDEdit /...
  • 内存和SSD的区别 终于搞懂了

    万次阅读 2018-06-06 16:53:39
    1、手机/电脑的内存和存储 现如今随着手机的不断推广普及,已掩盖电脑时代的辉煌,很多新生代的用户都与...内存和SSD的区别 终于搞懂了 于计算机组成原理来分析:手机电脑并没有本质的区别,主体结构依然为输...
  • 内存分段分页的区别

    千次阅读 2013-08-19 18:26:27
    页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要(也是对用户透明的)。段是信息的逻辑单位,它含有一组其意义相对...
  • 昨天去QB买了条2GB 内存插到x60上,目前组建3GB非对称双通道,这么多内存,对于pc机似乎可以有很多利用的地方。系统为xp,目前主要找到提升上网性能的几个办法,开机后剩余内存约2GB。 1、关闭系统虚拟内存,目前尚...
  • 32位系统最大只能支持4GB内存之由来

    千次阅读 2018-03-06 13:20:14
    也许大家对这个问题都不陌生,实际装过系统用过电脑的朋友可能都有这样的经历:自己电脑配的是4G的内存条,可是装完系统之后发现电脑上显示的只有3.2G左右可用内存,其它的内存跑到哪去了?网上也有很多朋友给出了...
  • ANSIASCII区别 NSI码(American National Standards Institute) 美国国家标准学会的标准码 ASCII码(America Standard Code for Information Interchange)美国信息交换标准码 是基于拉丁字母的一套电脑编码...
  • 一、认识Android储存结构 ...内存与PC的内存是一样的,是用来运行程序,不能用来永久存储数据,手机一旦关机,在内存中的所有数据都将会丢失,内存也是现在人类制造的所有电子设备所必需拥有的。 (2)内部存储RO
  • 越来越多的玩家喜欢自己DIY装机,DIY硬件就是保证电脑兼容的前提下自行挑选处理器、显卡、主板、内存、硬盘、机箱、电源等组合在一起,而在这一过程中,诸多朋友发现单单对内存的容量选择就存在一堆疑问,DIY装机用...
  • 怎样把HTC G7的内存扩展到2GB

    千次阅读 2013-09-29 22:18:33
    介绍 HTC G7的内部存储只有148M,两年前买它的时候,android应用大多比较小巧,148M已经足够用了。...于是,从网上找了些资料扩展内存的资料,测试,发现的确可以把内存扩展到2GB,运行速度扩展之前几乎没有差别。
  • 为什么32位机器最大只能用到4GB内存

    千次阅读 2016-09-04 15:53:38
    在此之前先来了解一些计算机存储单位之间的关系以及计算机系统结构PC硬件方面的一些知识。 一、计算机存储单位之间的关系 位 bit (Binary Digits):存放一位二进制数,即 0 或 1,最小的存储单位。 字节 byte:...
  • vs 2008 win32程序使用大内存 (>2GB)设置

    千次阅读 2015-11-09 17:10:53
    今天用vc 2008调用matlab相机标定工具箱stereo rectify的DLL,程序运行到一半就挂。 试了N次都是这样。 没办法,写了一个matlab测试程序,测试没问题。 ...后面再想,32位机只能使用2 GB以内的内

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 269,966
精华内容 107,986
关键字:

内存gb和gb的区别