Linux里面mysql.pid作用是什么?

Linux里面mysql.pid作用是什么?,第1张

pid文件的作用

1.pid文件的内容

用cat命令查看,可以看到内容只有一行,记录了该进程的ID

2.pid文件的作用

防止启动多个进程副本

3.pid文件的原理

进程运行后会给.pid文件加一个文件锁,只有获得pid文件(固定路径固定文件名)写入权限(F_WRLCK)的进程才能正常启动并把自身的PID写入该文件中。其它同一个程序的多余进程则自动退出。

mysql的pid文件

mysql pid文件记录的是当前mysqld进程的pid. 《linux 就该这么学》

通过Mysqld_safe启动mysql时,mysqld_safe会检查pid文件,未指定PID文件时,pid文件默认名为$DATADIR/`hostname`.pid

1)pid文件不存在,不做处理.

2)文件存在,且pid已占用则报错"A mysqld process already exists"

文件存在,,但pid未占用,则删除pid文件。

mysqld启动后会通过create_pid_file函数新建pid文件,通过getpid()获取当前进程pid并将PID写入pid文件。

假设表结构是

ordertest(id,pid,name)

id是唯一的,pid有重复且只取自id中存在的数值

实现代码如下:

select t.id,t.pid,t.`name` from 

(select a.*,b.id as f1,

(select id from ordertest where id=a.pid 

and id<a.id limit 1) f2,

(select max(id) from ordertest where 

pid=a.pid and id<a.id having count(1)>1) as f3 

from ordertest a left join 

(select a.id from ordertest a where exists(

select 1 from ordertest b where b.id<>a.id 

and b.pid=a.id)) b on a.id= b.id) t 

order by 

case when f2 is null then t.id 

else ifnull(f1,

case when f3 is null then f2 else t.id end) end,

case when f2 is null then 0 

else if((f1 is not null) or (f3 is not null),0,1) 

end,t.id

运行效果如下图

题主的这个排序需求,用SQL来解决,其难度的确比较大,不过经过特殊的排序安排还是可以解决的。请参考下列语句:

这里假设表名为OrderTest(id,pid,name) id是主键具有唯一性

select t.id,t.pid,t.`name` from 

(select a.*,

(select id from OrderTest where id=a.pid and 

id<>a.id limit 1) as p

from OrderTest a) t 

order by 

IFNULL(t.p,t.id),

case when t.p is null then 0 else 1 end,t.id

下面是实验截图


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存