diff --git a/src/models/post.ts b/src/models/post.ts
index 68a638fa2..ac7890d2e 100644
--- a/src/models/post.ts
+++ b/src/models/post.ts
@@ -27,6 +27,7 @@ export type IPost = {
 	_id: mongo.ObjectID;
 	channelId: mongo.ObjectID;
 	createdAt: Date;
+	deletedAt: Date;
 	mediaIds: mongo.ObjectID[];
 	replyId: mongo.ObjectID;
 	repostId: mongo.ObjectID;
diff --git a/src/queue/index.ts b/src/queue/index.ts
index 691223de2..4aa1dc032 100644
--- a/src/queue/index.ts
+++ b/src/queue/index.ts
@@ -1,7 +1,6 @@
 import { createQueue } from 'kue';
 
 import config from '../config';
-import db from './processors/db';
 import http from './processors/http';
 
 const queue = createQueue({
@@ -19,10 +18,6 @@ export function createHttp(data) {
 		.backoff({ delay: 16384, type: 'exponential' });
 }
 
-export function createDb(data) {
-	return queue.create('db', data);
-}
-
 export function deliver(user, content, to) {
 	return createHttp({
 		type: 'deliver',
@@ -33,8 +28,6 @@ export function deliver(user, content, to) {
 }
 
 export default function() {
-	queue.process('db', db);
-
 	/*
 		256 is the default concurrency limit of Mozilla Firefox and Google
 		Chromium.
diff --git a/src/queue/processors/db/delete-post-dependents.ts b/src/queue/processors/db/delete-post-dependents.ts
deleted file mode 100644
index 6de21eb05..000000000
--- a/src/queue/processors/db/delete-post-dependents.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import Favorite from '../../../models/favorite';
-import Notification from '../../../models/notification';
-import PollVote from '../../../models/poll-vote';
-import PostReaction from '../../../models/post-reaction';
-import PostWatching from '../../../models/post-watching';
-import Post from '../../../models/post';
-
-export default async ({ data }) => Promise.all([
-	Favorite.remove({ postId: data._id }),
-	Notification.remove({ postId: data._id }),
-	PollVote.remove({ postId: data._id }),
-	PostReaction.remove({ postId: data._id }),
-	PostWatching.remove({ postId: data._id }),
-	Post.find({ repostId: data._id }).then(reposts => Promise.all([
-		Notification.remove({
-			postId: {
-				$in: reposts.map(({ _id }) => _id)
-			}
-		}),
-		Post.remove({ repostId: data._id })
-	]))
-]);
diff --git a/src/queue/processors/db/index.ts b/src/queue/processors/db/index.ts
deleted file mode 100644
index 75838c099..000000000
--- a/src/queue/processors/db/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import deletePostDependents from './delete-post-dependents';
-
-const handlers = {
-  deletePostDependents
-};
-
-export default (job, done) => handlers[job.data.type](job).then(() => done(), done);
diff --git a/src/remote/activitypub/act/delete/note.ts b/src/remote/activitypub/act/delete/note.ts
index ff9a8ee5f..8e9447b48 100644
--- a/src/remote/activitypub/act/delete/note.ts
+++ b/src/remote/activitypub/act/delete/note.ts
@@ -1,7 +1,6 @@
 import * as debug from 'debug';
 
 import Post from '../../../../models/post';
-import { createDb } from '../../../../queue';
 import { IRemoteUser } from '../../../../models/user';
 
 const log = debug('misskey:activitypub');
@@ -19,10 +18,13 @@ export default async function(actor: IRemoteUser, uri: string): Promise<void> {
 		throw new Error('投稿を削除しようとしているユーザーは投稿の作成者ではありません');
 	}
 
-	Post.remove({ _id: post._id });
-
-	createDb({
-		type: 'deletePostDependents',
-		id: post._id
-	}).delay(65536).save();
+	Post.update({ _id: post._id }, {
+		$set: {
+			deletedAt: new Date(),
+			text: null,
+			textHtml: null,
+			mediaIds: [],
+			poll: null
+		}
+	});
 }