如何在AgentGraph上找到锁定等待查询?

时间:2019-01-21 08:37:50

标签: agens-graph

我正遭受AgensGraph交易缓慢的困扰。 CPU使用率极低。 我猜是那种等待锁定的情况。

如何查找锁定等待查询?

1 个答案:

答案 0 :(得分:0)

您可以尝试AgensGraph的锁定等待日志。

首先,更改“ postgresql.conf”上的参数

import java.util.ArrayList;
import java.util.List;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType;
import org.apache.spark.sql.types.DataType;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.SparkSession;

/*
 * Analysis of the data using Spark SQL
 * 
 */
public class HrtDisDataAnalyze {

    public HrtDisDataAnalyze() {

    }

    public static void main(String[] args) {
        SparkConfAndCtxBuilder ctxBuilder = new SparkConfAndCtxBuilder();
        JavaSparkContext jctx = ctxBuilder.loadSimpleSparkContext("Heart Disease Data Analysis App", "local");
        JavaRDD<String> rows = jctx.textFile("file:///C:/Users/harpr/workspace/HrtDisDetection/src/resources/full_data_cleaned.csv");

        String schemaString = "age sex cp trestbps chol fbs restecg thalach exang oldpeak slope ca thal num";
        List<StructField> fields = new ArrayList<>();
        for (String fieldName : schemaString.split(" ")) {
            fields.add(DataTypes.createStructField(fieldName, DataTypes.StringType, true));
        }

        StructType schema = DataTypes.createStructType(fields);
        JavaRDD<Row> rowRdd = rows.map(new Function<String, Row>() {

            @Override
            public Row call(String record) throws Exception {
                String[] fields = record.split(",");
                return RowFactory.create(fields[0],fields[1],fields[2],fields[3],fields[4],fields[5],fields[6],fields[7],fields[8],fields[9],fields[10],fields[11],fields[12],fields[13]);
            }
        });
        SparkSession sparkSession = SparkSession.builder().config("spark.serializer", "org.apache.spark.serializer.KryoSerializer").config("spark.kryo.registrator", "org.datasyslab.geospark.serde.GeoSparkKryoRegistrator").master("local[*]").appName("testGeoSpark").getOrCreate();
        Dataset df = spark.read().csv("usr/local/eclipse1/eclipse/hrtdisdetection/src/resources/cleveland_data_raw.csv");
        df.createOrReplaceTempView("heartDisData");

第二,重新启动AgensGraph。

log_lock_waits = on
deadlock_timeout = 1s

最后,运行查询并检查日志文件。

[会话1:阻止tran]

$ ag_ctl stop
waiting for server to shut down.... done
server stopped
$ ag_ctl start
server starting

[Session2:锁定等待交易]

agens=# begin;
BEGIN
agens=# create (:n{id:1});
GRAPH WRITE (INSERT VERTEX 1, INSERT EDGE 0)
agens=# rollback;
ROLLBACK
agens=# 

从日志文件中检查日志。

agens=# create (:n{id:1});
GRAPH WRITE (INSERT VERTEX 1, INSERT EDGE 0)