您的位置:

linux查看mysql内存的简单介绍

本文目录一览:

linux mysql默认数据目录在哪

1、通过rpm查看:查看软件是否安装。

首先我们需要查看软件是否已经安装,或者说查看安装的软件包名称。如查找是否安装mysql。

2、接着根据 rpm -ql 列出软件包安装的文件。

3、综合上述以上的问题,可以直接使用  rpm -qal |grep mysql 查看mysql所有安装包的文件存储位置。

4、除了rpm 查询还可以通过yum search 查找对应可以安装的软件包。

5、除了根据软件包来找文件位置之外,最常用的就是通过find查找某个关键字比如mysql所有包含mysql服务的文件路径。

6、Which命令是通过 PATH环境变量查找可执行文件路径,用于查找指向这个命令所在的文件夹。

7、Whereis命令和find类似,不过不同的是whereis是通过本地架构好的数据库索引查找会比较快。如果没有更新到数据库里面的文件或命令则无法查找到信息。

linux mysql 怎么用

启动:net start mySql;

进入:mysql -u root -p/mysql -h localhost -u root -p databaseName;

列出数据库:show databases;

选择数据库:use databaseName;

列出表格:show tables;

显示表格列的属性:show columns from tableName;

建立数据库:source fileName.txt;

匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串;

增加一个字段:alter table tabelName add column fieldName dateType;

增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;

多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中;

增加一个管理员帐户:grant all on *.* to user@localhost identified by "password";

每条语句输入完毕后要在末尾填加分号';',或者填加'\g'也可以;

查询时间:select now();

查询当前用户:select user();

查询数据库版本:select version();

查询当前使用的数据库:select database();

1、删除student_course数据库中的students数据表:

rm -f student_course/students.*

2、备份数据库:(将数据库test备份)

mysqldump -u root -p testc:\test.txt

备份表格:(备份test数据库下的mytable表格)

mysqldump -u root -p test mytablec:\test.txt

将备份数据导入到数据库:(导回test数据库)

mysql -u root -p test

3、创建临时表:(建立临时表zengchao)

create temporary table zengchao(name varchar(10));

4、创建表是先判断表是否存在

create table if not exists students(……);

5、从已经有的表中复制表的结构

create table table2 select * from table1 where 11;

6、复制表

create table table2 select * from table1;

7、对表重新命名

alter table table1 rename as table2;

8、修改列的类型

alter table table1 modify id int unsigned;//修改列id的类型为int unsigned

alter table table1 change id sid int unsigned;//修改列id的名字为sid,而且把属性修改为int unsigned

9、创建索引

alter table table1 add index ind_id (id);

create index ind_id on table1 (id);

create unique index ind_id on table1 (id);//建立唯一性索引

10、删除索引

drop index idx_id on table1;

alter table table1 drop index ind_id;

11、联合字符或者多个列(将列id与":"和列name和"="连接)

select concat(id,':',name,'=') from students;

12、limit(选出10到20条)第一个记录集的编号是0

select * from students order by id limit 9,10;

13、MySQL不支持的功能

事务,视图,外键和引用完整性,存储过程和触发器

14、MySQL会使用索引的操作符号

,=,=,,=,between,in,不带%或者_开头的like

15、使用索引的缺点

1)减慢增删改数据的速度;

2)占用磁盘空间;

3)增加查询优化器的负担;

当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案;

16、分析索引效率

方法:在一般的SQL语句前加上explain;

分析结果的含义:

1)table:表名;

2)type:连接的类型,(ALL/Range/Ref)。其中ref是最理想的;

3)possible_keys:查询可以利用的索引名;

4)key:实际使用的索引;

5)key_len:索引中被使用部分的长度(字节);

6)ref:显示列名字或者"const"(不明白什么意思);

7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数;

8)extra:MySQL的建议;

17、使用较短的定长列

1)尽可能使用较短的数据类型;

2)尽可能使用定长数据类型;

a)用char代替varchar,固定长度的数据处理比变长的快些;

b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能;

c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了;

d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大;

18、使用not null和enum

尽量将列定义为not null,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询;

如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的;

19、使用optimize table

对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。可以通过使用optimize table来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。 optimize table可以用于MyISAM和BDB类型的数据表。实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表;

20、使用procedure analyse()

可以使用procedure analyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedure analyse()就可以了;例如:

select * from students procedure analyse();

select * from students procedure analyse(16,256);

第二条语句要求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长;

21、使用查询缓存

1)查询缓存的工作方式:

第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。

2)配置缓存参数:

变量:query_cache _type,查询缓存的操作模式。有3中模式,0:不缓存;1:缓存查询,除非与 select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询; query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。

22、调整硬件

1)在机器上装更多的内存;

2)增加更快的硬盘以减少I/O等待时间;

寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快;

3)在不同的物理硬盘设备上重新分配磁盘活动;

如果可能,应将最繁忙的数据库存放在不同的物理设备上,这跟使用同一物理设备的不同分区是不同的,因为它们将争用相同的物理资源(磁头)。

如何在linux上远程访问本地的mysql

1、查该服务器是否能实现远程登录Mysql,看是否是因为没有权限。

2、检查Linux上Mysql是否启动。

3、若启动登录Mysql,若未启动,执行service mysqld start。

4、赋权限,%表示所有ip可访问,也可以改成自己本地的IP地址,密码改为linux上mysql的密码。

5、本地为了方便被访问,可先关闭自己的防火墙。

Linux上MySQL优化提升性能 哪些可以优化的关闭NUMA特性

Linux上MySQL优化提升性能,可以优化关闭NUMA特性如下:

这些其实都源于CPU最新的技术:节能模式。操作系统和CPU硬件配合,系统不繁忙的时候,为了节约电能和降低温度,它会将CPU降频。

为了保证MySQL能够充分利用CPU的资源,建议设置CPU为最大性能模式。这个设置可以在BIOS和操作系统中设置,当然,在BIOS中设置该选项更好,更彻底。

然后我们看看内存方面,我们有哪些可以优化的。

i)

我们先看看numa

非一致存储访问结构

(NUMA

Non-Uniform

Memory

Access)

也是最新的内存管理技术。它和对称多处理器结构

(SMP

Symmetric

Multi-Processor)

是对应的。

我们可以直观的看到:SMP访问内存的都是代价都是一样的;但是在NUMA架构下,本地内存的访问和非

本地内存的访问代价是不一样的。对应的根据这个特性,操作系统上,我们可以设置进程的内存分配方式。目前支持的方式包括:

--interleave=nodes

--membind=nodes

--cpunodebind=nodes

--physcpubind=cpus

--localalloc

--preferred=node

简而言之,就是说,你可以指定内存在本地分配,在某几个CPU节点分配或者轮询分配。除非

是设置为--interleave=nodes轮询分配方式,即内存可以在任意NUMA节点上分配这种方式以外。其他的方式就算其他NUMA节点上还有内

存剩余,Linux也不会把剩余的内存分配给这个进程,而是采用SWAP的方式来获得内存。

所以最简单的方法,还是关闭掉这个特性。

关闭特性的方法,分别有:可以从BIOS,操作系统,启动进程时临时关闭这个特性。

a)

由于各种BIOS类型的区别,如何关闭NUMA千差万别,我们这里就不具体展示怎么设置了。

b)

在操作系统中关闭,可以直接在/etc/grub.conf的kernel行最后添加numa=off,如下所示:

kernel

/vmlinuz-2.6.32-220.el6.x86_64

ro

root=/dev/mapper/VolGroup-root

rd_NO_LUKS.UTF-8

rd_LVM_LV=VolGroup/root

rd_NO_MD

quiet

SYSFONT=latarcyrheb-sun16

rhgb

crashkernel=auto

rd_LVM_LV=VolGroup/swap

rhgb

crashkernel=auto

quiet

KEYBOARDTYPE=pc

KEYTABLE=us

rd_NO_DM

numa=off

另外可以设置

vm.zone_reclaim_mode=0尽量回收内存。

c)

启动MySQL的时候,关闭NUMA特性:

numactl

--interleave=all

mysqld

当然,最好的方式是在BIOS中关闭。

ii)

我们再看看vm.swappiness。

vm.swappiness是操作系统控制物理内存交换出去的策略。它允许的值是一个百分比的值,最小为0,最大运行100,该值默认为60。vm.swappiness设置为0表示尽量少swap,100表示尽量将inactive的内存页交换出去。

具体的说:当内存基本用满的时候,系统会根据这个参数来判断是把内存中很少用到的inactive

内存交换出去,还是释放数据的cache。

谁知道Linux下500M内存,nginx php mysql 怎么分?

This

is

for

a

system

with

little

memory

(32M

-

64M)

where

MySQL

playsan

important

part,

or

systems

up

to

128M

where

MySQL

is

used

together

withother

programs

(such

as

a

web

server)

cp

/usr/share/mysql/my-medium.cnf

/etc/my.cnf

每个php-fpm占用20M左右的内存,

max_children默认5个,子进程太多反而会增加master

process调度的负担,而且CPU进行过多的上下文切换也会浪费系统资源,得不偿失,所以按

php-fpm.conf

默认配置就好:

pm

=

dynamic

pm.max_children

=

5

pm.start_servers

=

2

pm.min_spare_servers

=

1

pm.max_spare_servers

=

3

php-fpm很像httpd用prefork那样运行,开始时fork出2个进程,根据请求数的增多自动fork多更多的子进程,配置里默认最多是5个。如果你的CPU多核,很强劲,

max_children

也可以设大点,比如可以设10个,要注意的是,即使内存够大,

max_children也不要弄太多,CPU得跟得上才行。

至于nginx.conf,默认值就好,默认是1个工作进程,单个工作进程最大并发1024。

worker_processes

1;

worker_connections

1024;

别看Nginx默认才一个工作进程(里面包含一个主线程),这并不妨碍Nginx高效。

httpd

prefork那一堆工作进程,静态和动态请求都一样占用线程,性能真没Nginx好。

对于多核CPU,Nginx还可以配置绑定

核芯,充分利用多核CPU。