问题描述
我需要一个设置,从 Postgresql 的表中删除超过 60 天的行。
import React from "react";
import { NavigationContainer } from "@react-navigation/native";
import AuthNavigator from "./app/navigation/authNavigator";
import DashboarNavigator from "./app/navigation/dashBoardNavigator";
import navigationTheme from "./app/navigation/navigationTheme";
import { Provider } from "react-redux";
import { createStore,applyMiddleware } from "redux";
import { persistStore,persistReducer } from "redux-persist";
import storage from "redux-persist/lib/storage";
import autoMergeLevel2 from "redux-persist/lib/stateReconciler/autoMergeLevel2";
import { PersistGate } from "redux-persist/lib/integration/react";
import { userReducer } from "./app/store/reducers/index";
import thunk from "redux-thunk";
import { Autherization } from "./app/authentication/AuthComponent";
import { connect } from "react-redux";
const persistConfig = {
key: "root",storage: storage,stateReconciler: autoMergeLevel2
};
const pReducer = persistReducer(persistConfig,userReducer);
const store = createStore(pReducer,applyMiddleware(thunk));
const persistor = persistStore(store);
function App(props) {
console.log(props,"kkkkkkk",store.getState());
return (
<Provider store={store}>
<PersistGate persistor={persistor}>
<NavigationContainer theme={navigationTheme}>
<Autherization />
{/* {props && props.user && props.user.token ? (
<DashBoardNavigator />
) : (
<AuthNavigator />
)} */}
</NavigationContainer>
</PersistGate>
</Provider>
);
}
const mapStatetoProps = state => {
return {
...state,user: state.user,token: state.user ? state.user.access_token : null
};
};
const AppPage = connect(mapStatetoProps)(App);
export default AppPage;
export { store };
`
但是我相信如果插入频率高的话,这将不得不经常扫描整个表,这会导致数据库负载很高。
我可以每小时/每天通过 BEGIN
DELETE FROM table
WHERE updateDate < Now() - INTERVAL '60 days';
RETURN NULL;
END;
$$;
作业或 Lambda 函数运行此函数。我需要知道该表上每小时的插入情况才能做出决定。
是否有我可以设置的查询或作业来收集详细信息?
解决方法
为了计算每小时的记录数,您可以运行以下查询:
SELECT CAST(updateDate AS date) AS day,EXTRACT(HOUR FROM updateDate) AS hour,COUNT(*)
FROM _your_table
WHERE updateDate BETWEEN ? AND ?
GROUP BY
1,2
ORDER BY
1,2;
我们每天在单个表上执行大约 4000 万次 INSERT,该表按月进行分区。 3 个月后,我们只是删除了分区。这比 DELETE 快得多。