小编gab*_*bba的帖子

如何使用azure存储表每秒获得更多10个插入

我编写简单的WorkerRole,将测试数据添加到表中.插入代码是这样的.

var TableClient = this.StorageAccount.CreateCloudTableClient();
TableClient.CreateTableIfNotExist(TableName);
var Context = TableClient.GetDataServiceContext();

this.Context.AddObject(TableName, obj);
this.Context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

此代码针对每个客户端请求运行.我用1-30个客户端线程进行测试.我有很多不同大小的实例.我不知道我做错了什么,但我无法达到每秒10次插入.如果有人知道如何提高速度请告诉我.谢谢

UPDATE

  • 删除CreateTableIfNotExist对我的插入测试没有任何影响.
  • 切换模式为expect100Continue ="false"useNagleAlgorithm ="false"在插入速率跳至30-40 ips时产生短时间效果.但是,30秒后,插入速率降至6 ips,超时率为50%.

c# azure azure-table-storage

11
推荐指数
1
解决办法
5926
查看次数

如何使部分方法异步

我有部分方法生成的代码

{
    ...
    partial void InterceptOperationCall(IOperationContext context);
    ...

    async Task SomeMethod()
    {
        InterceptOperationCall(cntx);
        await LongOperation(cntx);
    }
}
Run Code Online (Sandbox Code Playgroud)

和handwrited部分

{
    partial void InterceptOperationCall(IOperationContext context)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要在内部执行异步调用InterceptOperationCall是否有人知道某种方法来解决部分方法限制?

换句话说: 我想在长时间操作之前异步进行InterceptOperationCall并保证,同时我想在另一个文件中声明这个方法的主体.

UPD作为解决方案解决方案我选择:

  • 不使用生成的部分方法存根,并使用动态代理(Castle.DynamicProxy)进行包装并使用AsyncInterceptorBasefrom(Nito.AsyncEx)进行拦截
  • 另一种选择我看到重写代码生成器

一直在寻找更好的解决方案,如果有人知道另一种提供可选功能的方法,用somoe异步逻辑包装异步调用,请帮助我.

c# asynchronous auto-generate

10
推荐指数
1
解决办法
629
查看次数

如何在特定字段SQL中使用已知数据顺序的表进行二进制搜索

我有一个像这样结构的表:

create table to_much_data
(
    id primary key clustered,
    dt datetime,
    data varbinary(400)
)
Run Code Online (Sandbox Code Playgroud)

它没有按日期时间的索引,但我知道dt非递减序列.我需要查询此表中的数据,具有特定条件的日期字段,如下所示:

select * 
from to_much_data
where dt between '20190220' and '20190221'
Run Code Online (Sandbox Code Playgroud)

因为没有dt的索引,我更喜欢将查询转换为:

select * 
from to_much_data
where id between StartDateID and EndDateID 
Run Code Online (Sandbox Code Playgroud)

我相信StartDateID并且EndDateID可以找到log(N)或更好的复杂性.但我不知道有任何解决办法.

有没有人知道这样做的方法?

UPD

看起来没有广为人知的即用型解决方案.如果无法创建索引,可以使用一些变通方法:

  • 过滤索引,但它可以影响表性能并增加锁定
  • 另一个带映射的表,但需要手动更新(或通过触发器或存储过程),它可能会影响性能并增加锁定
  • t-sql代码与傻二进制搜索,但它看起来像自行车重塑

尽管如此,我相信在某些情况下,数据库可以更加有效和直观.如果有一天我们能够写下来,我会很高兴的:

select * 
from to_much_data with(sequence_order(id asc, dt asc))
where dt between '20190220' and '20190221'
Run Code Online (Sandbox Code Playgroud)

sql sql-server algorithm

10
推荐指数
2
解决办法
316
查看次数

多次抛出相同的异常实例

面对生成一个异常实例然后可能多次抛出该异常的代码。

private readonly Exception exceptionInstance = new Exception("message");
Run Code Online (Sandbox Code Playgroud)

多次抛出相同的异常实例是否正确?

c# exception

4
推荐指数
1
解决办法
1196
查看次数

HTTP标头允许客户端选择JWT算法

我有一个为用户生成令牌的资源.我想添加可能性选择令牌生成算法.

我无法更改请求结构,但可以添加一些带有算法名称的HTTP标头.我的问题是选择什么标题?请问Accept是否可以接受?

我目前使用Accept-Token-Algorithm标头发送像RS256和的值HS256.

http jwt

3
推荐指数
1
解决办法
165
查看次数

如何制作加载脚本,将多个文件加载到一个表中

我有多个按惯例命名的文件:"data_YYYY.MM.xslx"我需要将所有这些文件加载​​到一个qlikview表中,但是当我这样做时:

Tab:
load Name, Number from [data_*.csv];
Run Code Online (Sandbox Code Playgroud)

我得到每个文件的Tab,Tab-1,Tab-2文件.

我也尝试过这样做:

Tab:
add load Name, Number from [data_*.csv];
Run Code Online (Sandbox Code Playgroud)

具有相同的效果.

如果有人知道怎么做,请帮忙.

qlikview

1
推荐指数
1
解决办法
3万
查看次数

Qlikview中的不等式设置了表达式

Qlikview帮助示例:

sum( {$<Year = {“>1978<2004”}>} Sales )
Run Code Online (Sandbox Code Playgroud)

我尝试这个代码,但它没有用

Count( {$<Damages.DamageDate = {">Min(OtherDate)"}>} Damages.Id)
Run Code Online (Sandbox Code Playgroud)

看起来qlikview不支持不平等的日期.如果有任何知道如何做这样的事情请帮助.

qlikview

0
推荐指数
1
解决办法
1755
查看次数