专注各种脚本编程
Baidu
加入收藏夹
本站内容有下面分类知识,欢迎您的到来^_^
shell相关:指令篇 基础篇 脚本欣赏 编程实例 shell问问 shell视频教程 技巧篇 水平测试 E文资料 vi编辑器 高级Bash脚本编程指南
其他:mysql perl c语言 oracle
当前位置:| 主页>mysql>

多进程的mysql假像解疑

百度收藏 QQ搜藏

昨天下载了mysql5.0.45(是二进制版本,解开就能用的那种),操作系统是RHEL5.1 ,RHEL5.1是装在VMware6里面的,遇到一个很奇怪的问题。
没做什么配置,解开tar包就运行mysql,发现产生了多个进程,可是mysql一直是单进程(多线程)的啊,linux下mysql不应该变成多个进程的。

相关信息如下:

查询系统相关信息
[root@vtest bin]# uname -a
Linux vtest 2.6.18-53.el5 #1 SMP Wed Oct 10 16:34:02 EDT 2007 i686 athlon i386 GNU/Linux
[root@vtest bin]# ./mysqladmin -V
./mysqladmin  Ver 8.41 Distrib 5.0.45, for pc-linux-gnu on i686
[root@vtest bin]# ./mysqld_safe --user=mysql &
[1] 6214

启动mysql
[root@vtest bin]# Starting mysqld daemon with databases from /usr/local/mysql/data
[root@vtest bin]#

ps查询系统进程
[root@vtest ~]# ps ax
~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~
6214 pts/0    S      0:00 /bin/sh ./mysqld_safe --user=mysql
6238 pts/0    S      0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql
6239 pts/0    S      0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql
6240 pts/0    S      0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql
6241 pts/0    S      0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql
6242 pts/0    S      0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql
6243 pts/0    S      0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql
6245 pts/0    S      0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql
6246 pts/0    S      0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql
6247 pts/0    S      0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql
6248 pts/0    S      0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql
6249 pts/1    R+     0:00 ps ax

用TOP命令查看
[root@vtest ~]# top
top - 09:48:10 up  9:03,  2 users,  load average: 0.00, 0.00, 0.00
Tasks:  55 total,   1 running,  54 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3%us,  0.3%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    263564k total,   259360k used,     4204k free,    17776k buffers
Swap:  1048568k total,       96k used,  1048472k free,   200296k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
6238 mysql     25   0 49272  12m 2020 S  0.0  5.0   0:00.30 mysqld
6239 mysql     18   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld
6240 mysql     25   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld
6241 mysql     24   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld
6242 mysql     24   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld
6243 mysql     25   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld
6245 mysql     18   0 49272  12m 2020 S  0.0  5.0   0:00.01 mysqld
6246 mysql     18   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld
6247 mysql     18   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld
6248 mysql     25   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld
5981 root      17   0  9152 2748 2216 S  0.0  1.0   0:02.95 sshd
~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~

其实MySQL一直都是单进程、多线程的工作模式。只是,LinuxThreads并不是真正的线程,因此,这些进程其实还是采用系统调用 clone() 来共享同样的地址空间的。尽管采用 ps 查看的结果看起来是多进程,其实mysqld真正的工作方式还是多线程。

上一篇:POSTGRESQL和MYSQL的自增字段区别 下一篇:简单的MySQL SQL Profiler性能分析器脚本

power by soyo123 2007-2008