php 面试必考题 mysql的MyISAM 和 InnoDB 的区别

php 面试必考题 mysql的MyISAM 和 InnoDB 的区别,第1张

1.InnoDB不支持FULLTEXT类型的索引。

2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from

table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含

where条件时,两种表的 *** 作是一样的。

3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。

4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。MyISAM 是表所

innodb是行锁

5.LOAD TABLE FROM MASTER(从主负载表) *** 作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。

另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update

table set num=1 where name like “"2%”

6.InnoDB 支持事物

选择存储引擎 根据实际情况选择。

一般情况下如果查询多建议使用myIsam 。

如果你需要事务处理或是外键,那么InnoDB 可能是比较好的方式。

优化MYSQL数据库的方法:

1,选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM

2,使用join代替子查询

3,使用联合(UNION)来代替手动创建的临时表

4,事务处理(保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败)

5,适当建立索引(如何建立索引?索引的利与弊?)

6,优化sql语句

7,explain可以看到mysql执行计划

8,分表(垂直分表,水平分表?)

9,数据库主从

什么是PATH环境变量,它有什么作用?

LANG PS1 PATH

######PATH含义

存放的是命令的位置/路径

[root@oldboyedu01-nb ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

第二个里程牌-liunx 下面运行命令过程

####1、输入命令

####2、在PATH里面 路径进行查找

####3、找到了就运行

####4、找不到就提示 command not found

第1题

如何过滤出已知当前目录下oldboy中的所有一级目录(提示:不包含oldboy目录下面目录的子目录及隐藏目录,即只能是第一级目录)?

mkdir /oldboy -p

cd /oldboy

mkdir ext/oldboy test xiaodong xingfujie -p

touch jeacen olaboy wodi.gz yingsui.gz

yum install tree -y

[root@oldboyedu01-nb oldboy]# #如何查询某个软件是否安装了?

[root@oldboyedu01-nb oldboy]# rpm -qa ( 查找所有安装软件 )

[root@oldboyedu01-nb oldboy]# rpm -qa

[root@oldboyedu01-nb oldboy]# rpm -qa |grep tree ( 查找具体的软件安装包 )

tree-1.5.3-3.el6.x86_64

[root@oldboyedu01-nb oldboy]# rpm -qa tree

tree-1.5.3-3.el6.x86_64

[root@oldboyedu01-nb oldboy]# rpm -qa |grep ipt

initscripts-9.03.58-1.el6.centos.x86_64

iptables-ipv6-1.4.7-16.el6.x86_64

plymouth-scripts-0.8.3-29.el6.centos.x86_64

iptables-1.4.7-16.el6.x86_64

[root@oldboyedu01-nb oldboy]# #查看某个软件包里面的内容

[root@oldboyedu01-nb oldboy]# rpm -ql tre

package tre is not installed

[root@oldboyedu01-nb oldboy]# rpm -ql tree ( 查看具体安装包里面的内容 )

/usr/bin/tree

/usr/share/doc/tree-1.5.3

/usr/share/doc/tree-1.5.3/LICENSE

###方法1

[root@oldboyedu01-nb oldboy]# tree -d /oldboy/

/oldboy/

ext

oldboy

test

xiaodong

xingfujie

5 directories

[root@oldboyedu01-nb oldboy]#

[root@oldboyedu01-nb oldboy]# tree -dL 1 /oldboy/

/oldboy/

ext

test

xiaodong

xingfujie

##方法2

[root@oldboyedu01-nb oldboy]# find -type d

.

./ext

./ext/oldboy

./xiaodong

./test

./xingfujie

[root@oldboyedu01-nb oldboy]# find -maxdepth 1 -type d ! -name "." ( 找出名字不是点 )

./ext

./xiaodong

./test

./xingfujie

###方法3

[root@oldboyedu01-nb oldboy]# ls -l

total 28

-rw-r--r--. 1 root root 0 Jun 9 07:06 alex.txt

-rw-r--r--. 1 root root 292 Jun 9 06:34 ett.txt

drwxr-xr-x 3 root root 4096 Jun 22 21:55 ext

-rw-r--r-- 1 root root 0 Jun 22 23:44 jeacen

-rw-r--r-- 1 root root 0 Jun 22 23:44 olaboy

-rw-r--r--. 1 root root 0 Jun 9 07:06 oldboy.txt

drwxr-xr-x. 2 root root 4096 Jun 9 07:26 test

-rw-r--r--. 1 root root 8 Jun 9 07:26 test.sh

-rw-r--r--. 1 root root 8 Jun 9 07:26 t.sh

-rw-r--r-- 1 root root 0 Jun 22 23:44 wodi.gz

drwxr-xr-x 2 root root 4096 Jun 22 21:55 xiaodong

drwxr-xr-x 2 root root 4096 Jun 22 21:55 xingfujie

-rw-r--r-- 1 root root 0 Jun 22 23:44 yingsui.gz

[root@oldboyedu01-nb oldboy]# ls -l |grep "^d" ( 找出目录为d开头的文件 )

drwxr-xr-x 3 root root 4096 Jun 22 21:55 ext

drwxr-xr-x. 2 root root 4096 Jun 9 07:26 test

drwxr-xr-x 2 root root 4096 Jun 22 21:55 xiaodong

drwxr-xr-x 2 root root 4096 Jun 22 21:55 xingfujie

[root@oldboyedu01-nb oldboy]#

#方法4

[root@oldboyedu01-nb oldboy]# ls -l|awk '$2>1' ( 第二列大于1 )

total 28

drwxr-xr-x 3 root root 4096 Jun 22 21:55 ext

drwxr-xr-x. 2 root root 4096 Jun 9 07:26 test

drwxr-xr-x 2 root root 4096 Jun 22 21:55 xiaodong

drwxr-xr-x 2 root root 4096 Jun 22 21:55 xingfujie

[root@oldboyedu01-nb oldboy]#

#第2题假如当前目录[root@oldboyedu01-nb oldboy]# pwd #==>这是打印当前目录的,最菜的命令

/oldboy

现在因为需要进入到/tmp目录下进行 *** 作,执行的命令如下:

[ root@oldboy oldboy]# cd /tmp/

[ root@oldboy tmp]#pwd

/tmp/

*** 作完毕后,希望快速返回上一次进入的目录,即/oldboy目录,如何 *** 作(不使用cd/oldboy)

[root@oldboyedu01-nb tmp]# #快速回到上一次的所在的位置/目录

[root@oldboyedu01-nb tmp]# cd -

/oldboy

[root@oldboyedu01-nb oldboy]# pwd

/oldboy

[root@oldboyedu01-nb oldboy]#

cd -

cd . =====当前目录 复制/移动 cp/etc/host.

cd.. =====进入到当前目录的上一级目录

cd~ =====进入当前用户的家目录,回老家

(root用户)~ ====/root

(普通用户)~ ====/home/

cd =====回老家 回家

cd - #快速回到上一次的所在位置/目录

[root@oldboyedu01-nb oldboy]##进入到/etc/sysconfig/network-scripts/目录,并查看你所在的位置

[root@oldboyedu01-nb oldboy]#进入到上一级目录,并查看你所在位置

[root@oldboyedu01-nb oldboy]##进入到/root目录下面,并显示你所在位置

[root@oldboyedu01-nb oldboy]#回到老家

[root@VM-8-6-centos ~]# cd /oldboy/

[root@VM-8-6-centos oldboy]# cd /etc/sysconfig/network-scripts/

[root@VM-8-6-centos network-scripts]# pwd

/etc/sysconfig/network-scripts

[root@VM-8-6-centos network-scripts]# cd ..

[root@VM-8-6-centos sysconfig]# pwd

/etc/sysconfig

[root@VM-8-6-centos sysconfig]# cd /root/

[root@VM-8-6-centos ~]# pwd

/root

[root@VM-8-6-centos ~]# cd -

/etc/sysconfig

#第3题一个目录中有多文件(ls查看时好多屏),想最快速度查看到最近更新的文件,怎么查

ls -lrt

第5题 调试系统服务时,希望能实时查看系统日志/var/log/messages的更新,如何做?

tail -f 显示文件的实时更新

taillf ====tail -f

第4题 打印配置文件nginx.conf 内容的行号及内容,该如何做?

[root@oldboyedu01-nb oldboy]# echo {1..5}

1 2 3 4 5

[root@oldboyedu01-nb oldboy]# echo stu {01..10}

stu 01 02 03 04 05 06 07 08 09 10

[root@oldboyedu01-nb oldboy]# echo stu{01..10}

stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10

[root@oldboyedu01-nb oldboy]# echo stu{01..10}xargs -n1

stu01xargs stu02xargs stu03xargs stu04xargs stu05xargs stu06xargs stu07xargs stu08xargs stu09xargs stu10xargs -n1

[root@oldboyedu01-nb oldboy]# echo stu{01..10}|xargs -n1

stu01

stu02

stu03

stu04

stu05

stu06

stu07

stu08

stu09

stu10

[root@oldboyedu01-nb oldboy]# echo stu{01..10}|xargs -n1 >nginx.conf

[root@oldboyedu01-nb oldboy]# cat nginx.conf

stu01

stu02

stu03

stu04

stu05

stu06

stu07

stu08

stu09

stu10

[root@oldboyedu01-nb oldboy]#

###方法1

[root@oldboyedu01-nb oldboy]# cat -n nginx.conf (-n表示行号)

1 stu01

2 stu02

3 stu03

4 stu04

5 stu05

6 stu06

7 stu07

8 stu08

9 stu09

10 stu10

###方法2 -vi/vim

:set nu #显示行号 number

:set monu #取消小时行号

###方法3 -grep -n参数

[root@oldboyedu01-nb oldboy]# grep -n "stu" nginx.conf

1:stu01

2:stu02

3:stu03

4:stu04

5:stu05

6:stu06

7:stu07

8:stu08

9:stu09

10:stu10

[root@oldboyedu01-nb oldboy]# grep -n "." nginx.conf

1:stu01

2:stu02

3:stu03

4:stu04

5:stu05

6:stu06

7:stu07

8:stu08

9:stu09

10:stu10

小结:

1.cat -n;vi/vim显示行号

2、grep -n

3、awk NR $ print

###第5题,装完系统后,希望让网络文件共享服务器NFS(iptables),仅在3级别上开机自启动,如何 *** 作?

chkconfig iptables off

###第6题,liunx系统中查看中文,但是乱码,请问如何解决?

解决:

方法1:推荐修改xshell 字符集

方法2:修改系统字符集

1:命令行 export LANG=en_us.utf-8

2.写入配置文件

cp /etc/sysconfig/i18n /etc/sysconfig/i18n.bat

echo ‘LANG=en_us.UTF-8'>/etc/sysconfig/i18n

3、生效

source /etc/sysconfig/i18n

###第7题; /etc/目录为liunx系统默认的配置文件及服务启动命令的目录

a、请用tar 打包/etc整个目录(打包及压缩)

b、请把a点命令的压缩包,解压到/tmp指定目录下(最好只用tar命令实现)

c、请用tar打包/etc整个目录(打包及压缩,但需要排除/etc/services文件)。

tar 创建查看解压压缩包

[root@oldboyedu01-nb oldboy]# tar zcvf /tmp/etc.tar.gz /etc/

创建压缩包 压缩包存放的位置 压缩能够目录

zcvf 注释:

z----通过gzip工具进行压缩 ,

c-----表示create创建 压缩包 ,

v---表示verbose显示执行过程

f-----显示file 接上压缩包的名字

[root@oldboyedu01-nb oldboy]# ls -l /tmp/ (查看文件)

total 9508

-rw-r--r-- 1 root root 9736182 Jun 23 05:48 etc.tar.gz

查看压缩包的内容

[root@oldboyedu01-nb oldboy]# tar ztf /tmp/etc.tar.gz

ztf注释: t----表示list 显示压缩包的内容

解压

[root@oldboyedu01-nb oldboy]# cd /tmp/

[root@oldboyedu01-nb tmp]# tar zxf etc.tar.gz (解压)

创建

tar zcf

查看

tar tf

解压

tar xf

[root@oldboyedu01-nb tmp]# tar zxf etc.tar.gz

[root@oldboyedu01-nb tmp]# tar zcf /tmp/sysconfig.tar.gz /etc/sysconfig/

tar: Removing leading /' from member names tar: Removing leading /' from hard link targets

[root@oldboyedu01-nb tmp]# tar tf /tmp/sysconfig.tar.gz

[root@oldboyedu01-nb tmp]# ls -l

total 9568

drwxr-xr-x 78 root root 4096 Jun 23 03:39 etc

-rw-r--r-- 1 root root 9736182 Jun 23 05:48 etc.tar.gz

-rw-r--r-- 1 root root 53851 Jun 23 06:00 sysconfig.tar.gz

[root@oldboyedu01-nb tmp]# rm -fr etc

do not use rm -fr etc

[root@oldboyedu01-nb tmp]# ll

total 9568

drwxr-xr-x 78 root root 4096 Jun 23 03:39 etc

-rw-r--r-- 1 root root 9736182 Jun 23 05:48 etc.tar.gz

-rw-r--r-- 1 root root 53851 Jun 23 06:00 sysconfig.tar.gz

[root@oldboyedu01-nb tmp]# rm -fr etc

[root@oldboyedu01-nb tmp]# ll

total 9564

-rw-r--r-- 1 root root 9736182 Jun 23 05:48 etc.tar.gz

-rw-r--r-- 1 root root 53851 Jun 23 06:00 sysconfig.tar.gz

[root@oldboyedu01-nb tmp]# tar xf sysconfig.tar.gz

[root@oldboyedu01-nb tmp]# ll

total 9568

drwxr-xr-x 3 root root 4096 Jun 23 06:02 etc

-rw-r--r-- 1 root root 9736182 Jun 23 05:48 etc.tar.gz

-rw-r--r-- 1 root root 53851 Jun 23 06:00 sysconfig.tar.gz

[root@oldboyedu01-nb tmp]# ls etc

sysconfig

[root@oldboyedu01-nb tmp]# ls etc

sysconfig

[root@oldboyedu01-nb tmp]# ls etc/sysconfig/

acpid i18n kernel quota_nld sshd

atd init keyboard raid-check sysstat

auditd ip6tables modules readahead sysstat.ioconf

authconfig ip6tables-config netconsole readonly-root system-config-firewall

cbq ip6tables.old network rngd system-config-firewall.old

clock iptables networking rsyslog udev

console iptables-config network-scripts sandbox

cpuspeed iptables.old ntpd saslauthd

crond irqbalance ntpdate selinux

grub kdump prelink smartmontools

请把A点命令的压缩包,解压到/tmp指定目录下(最好用tar命令实现)

[root@oldboyedu01-nb tmp]# tar xf etc.tar.gz -C /opt/ (指定目录)

[root@oldboyedu01-nb tmp]# ls -l /opt/ (查看解压后的目录情况)

请用tar打包/etc整个目录(打包及压缩,但需要排除/etc/services文件)

[root@oldboyedu01-nb tmp]# tar zcf /tmp/etc.tar.gz /etc/

tar: Removing leading `/' from member names

tar: Removing leading `/' from hard link targets

[root@oldboyedu01-nb tmp]#

[root@oldboyedu01-nb tmp]# tar zcf /tmp/etc-paichu.tar.gz /etc/ --exclude=/etc/services

tar: Removing leading `/' from member names

tar: Removing leading `/' from hard link targets

[root@oldboyedu01-nb tmp]# tar zcf /tmp/etc-paichu.tar.gz /etc/ --exclude=/etc/services

tar: Removing leading `/' from member names

tar: Removing leading `/' from hard link targets

[root@oldboyedu01-nb tmp]# tar tf /tmp/etc.tar.gz |grep services

etc/init/readahead-disable-services.conf

etc/services

[root@oldboyedu01-nb tmp]# tar tf /tmp/etc-paichu.tar.gz|grep services

etc/init/readahead-disable-services.conf

[root@oldboyedu01-nb tmp]#

cd /

tar zcf /tmp/etc.tar.gz etc/

小结:

1、tar 打包压缩

2、创建压缩包 查看压缩包, 解压

3、解压到指定的文件夹

4、创建压缩包排除

#第8题如何查看etc/services文件的有多少行?

[root@oldboyedu01-nb ~]# cd /oldboy/

[root@oldboyedu01-nb oldboy]# wc -l /etc/services

10774 /etc/services、

屌丝去洗浴中心之路

3、

(1) 查看22端口是否开启telnet

(2) sshd远程连接进程是否在运行

ps -ef

[root@oldboyedu01-nb oldboy]# ps -ef |grep "sshd" (过滤进程sshd)

root 1436 1 0 Jun22 ? 00:00:00 /usr/sbin/sshd

root 2461 1436 0 05:11 ? 00:00:00 sshd: root@pts/0

root 2588 1436 0 06:45 ? 00:00:00 sshd: root@pts/1

root 2656 1436 0 07:30 ? 00:00:00 sshd: root@pts/2

root 2701 2658 0 08:01 pts/2 00:00:00 grep sshd

[root@oldboyedu01-nb oldboy]# ps -ef |grep "/sshd"

root 1436 1 0 Jun22 ? 00:00:00 /usr/sbin/sshd

root 2705 2658 0 08:03 pts/2 00:00:00 grep /sshd

[root@oldboyedu01-nb oldboy]# ps -ef |grep "/sshd"|wc -l (显示进程出现几个;次数)

2

第9题:过滤出/etc/services 文件包含3306和1521两数字所在行号的内容

[root@oldboyedu01-nb oldboy]# grep "3306" /etc/services

mysql 3306/tcp # MySQL

mysql 3306/udp # MySQL

[root@oldboyedu01-nb oldboy]# egrep "3306|1521" /etc/services

mysql 3306/tcp # MySQL

mysql 3306/udp # MySQL

ncube-lm 1521/tcp # nCube License Manager

ncube-lm 1521/udp # nCube License Manager

[root@oldboyedu01-nb oldboy]# #egrep ==grep -E支持高级正则(公鸡里的战斗机)

[root@oldboyedu01-nb oldboy]#

第10题命令行及shell中不加引号、加单引号和加双引号的区别小结

单引号 所见即所得 吃啥吐啥

双引号 里面的特殊符号会被解析

[root@VM-8-6-centos oldboy]# echo 'hello lls $LANG $(hostname) 'pwd''

hello lls $LANG $(hostname) pwd


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

原文地址: http://outofmemory.cn/zaji/8702228.html

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

发表评论

登录后才能评论

评论列表(0条)

保存