linux数据库查询的时候报at java.io.UnixFileSystem.createFileExclusively(Native Method)

linux数据库查询的时候报at java.io.UnixFileSystem.createFileExclusively(Native Method),第1张

看错误是文件生成错了,和数据库没关系吧。

可能是:

拟生成的文件已存在,被其他程序使用;(comfutureutilreporttagsERTagUtilcreateReportJS)

或者用户权限不够;

或者目录不存在。

通过sysbench的oltp_read_write测试来模拟业务压力、以此来给指定的硬件环境配置一份比较合理的MySQL配置文件。

环境介绍

硬件配置

软件环境

优化层级与指导思想

优化层级

MySQL数据库优化可以在多个不同的层级进行,常见的有:

SQL优化

参数优化

架构优化

本文重点关注:参数优化

指导思想

日志先行 -- 一个事务能否成功提交的关键是日志是否成功落盘,与数据没有太大的关系;也就是说对写的优化可以表述为各方面的资源向写 *** 作倾斜。

瓶颈分析 -- 通过show global status 的各个计数器的值基本上就能分析出当前瓶颈所在,再结合一些简单的系统层面的监控工具如top iostat 就能明确瓶颈。

整体性能是“读”&“写”之间的再平衡。

1

sql

数据库占用磁盘IO读写过高,

2

原因:可能是插入数据频繁,并且存在的索引太多

3

所以建议清除不用的索引

4

或是对数据库进行重建索引

5

也可以叫DBCC

*** 作

列存储——有别于传统的关系型数据库,Sybase IQ是按照数据表中的列来存储与访问数据的。基于列来读取数据,即使在数据不断膨胀的情况下,你也只须读出你想要了解的数据,避免了重复的全面扫描,显著提供查询速度,进而提升了性能指数P;同时,由于同一列中的所有数据域有相同的数据类型,因此,每一列都可以以更优化的效率和检索进行压缩,从而降低了占用的资源T。

数据压缩——正是由于数据按列存储,相邻的字段值具有相同的数据类型,所以压缩更容易,通常能得到大于50%的压缩。在海量数据下,随着数据的大幅压缩,所占用的空间等资源成本会显著减少。因此,更大的压缩比,加上大页面,使得Sybase IQ在获得优良查询性能的同时,减少了对存储空间的需求,因此占用的资源T也大大降低了。

丰富的索引——传统的关系型数据库引擎只能一对一地解决问题,在数据爆炸的今天,如此“大海捞针”似的查询会令反应速度非常迟缓。而Sybase IQ针对数据仓库应用有多种不同的索引技术,并且这些技术中的每一个都与数据仓库的查询问题相吻合,从而显著减少给定查询或更新的工作量,加快查询速度,自然带动性能P的提升。

Multiplex可扩展能力——Sybase IQ的Multiplex组件增加了在单一的Sybase IQ环境中支持多个SMP机器节点的功能,显著地减轻了进程与内存负担。因此,在信息飞速增长的商业社会,它允许数据仓库从基础开始扩展,从很小的规模扩展到非常巨大的规模,拥有卓越的可扩展能力,避免了数据爆炸带来的更新和不便。

总之,正是凭借以上引领未来的核心科技,Sybase IQ 在保证数据压缩的目标下,能够同时提高查询性能。因此,不论以S/T(即数据库压缩比)、P/T,还是从整体SPoT公式来看,Sybase IQ 都拥有更高的绿色数据指标,是“绿色数据库”的完美体现。

信息飞速膨胀的时代呼唤有效利用资源的绿色科技。绿色数据库Sybase IQ是对传统商业智能软件的挑战,引领了未来关系型数据库的发展方向,其低成本、高效能的绿色效应必将促进企业健康持久成长,营造和谐持续发展的绿色信息环境。

方法一:

private string connStr = ConfigurationManagerConnectionStrings["connstr"]ConnectionString;

/// <summary>

/// 用insert方法从文本文件中批量导入到数据库表中

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnInsert_Click(object sender, RoutedEventArgs e)

{

OpenFileDialog ofd = new OpenFileDialog();

ofdFilter = "文本文档|txt";

//如果用户没有选择文件并确定则直接返回

if (ofdShowDialog() != true)

{

return;

}

//获得文件名包括路径

string fileName = ofdFileName;

try

{

//定义一个开始时间

DateTime startTime = DateTimeNow;

//因为文件比较大,所有使用StreamReader的效率要比使用FileReadLines高

using (StreamReader sr = new StreamReader(fileName, EncodingDefault))

{

using (SqlConnection conn = new SqlConnection(connStr))

{

connOpen();

using (SqlCommand cmd = connCreateCommand())

{

while (!srEndOfStream)

{

string readStr = srReadLine();//读取一行数据

if (readStrStartsWith("1"))//去掉标题行

{

string[] strs = readStrSplit(new char[] { '\t', '"' }, StringSplitOptionsRemoveEmptyEntries);//将读取的字符串按"制表符/t“和””“分割成数组

string startNum = strs[0];

string numArea = strs[1];

string numType = strs[2];

cmdCommandText = "insert into T_PhoneInfo(FStartNum,FNumArea,FNumType) values(@startNum,@numArea,@numType)";

cmdParametersClear();//清除上一次的参数

cmdParametersAdd(new SqlParameter("@startNum", startNum));

cmdParametersAdd(new SqlParameter("@numArea", numArea));

cmdParametersAdd(new SqlParameter("@numType", numType));

cmdExecuteNonQuery();

}

}

}

}

}

//结束时间-开始时间=总共花费的时间

TimeSpan ts = DateTimeNow - startTime;

MessageBoxShow("导入数据成功!共花费时间:" + tsToString());

}

catch (IOException ex)

{

MessageBoxShow(exMessage);

}

catch (Exception ex)

{

MessageBoxShow(exMessage);

}

}

方法二:

private void btnSqlBulkCopy_Click(object sender, RoutedEventArgs e)

{

OpenFileDialog ofd = new OpenFileDialog();

ofdFilter = "文本文档|txt";

//如果用户没有选择文件并确定则直接返回

if (ofdShowDialog() != true)

{

return;

}

//获得文件名包括路径

string fileName = ofdFileName;

try

{

//定义一个开始时间

DateTime startTime = DateTimeNow;

//创建内存临时数据表来存储从文本文件中读取出来的数据

using (DataTable table = new DataTable())

{

//为数据表创建相对应的数据列

tableColumnsAdd("startNum");

tableColumnsAdd("numArea");

tableColumnsAdd("numType");

//因为文件比较大,所有使用StreamReader的效率要比使用FileReadLines高

using (StreamReader sr = new StreamReader(fileName, EncodingDefault))

{

while (!srEndOfStream)

{

DataRow dr = tableNewRow();//创建数据行

string readStr = srReadLine();//读取一行数据

if (readStrStartsWith("1"))//去掉标题行

{

string[] strs = readStrSplit(new char[] { '\t', '"' }, StringSplitOptionsRemoveEmptyEntries);//将读取的字符串按"制表符/t“和””“分割成数组

string startNum = strs[0];

string numArea = strs[1];

string numType = strs[2];

//往对应的 行中添加数据

dr["startNum"] = startNum;

dr["numArea"] = numArea;

dr["numType"] = numType;

tableRowsAdd(dr);//将创建的数据行添加到table中

}

}

}

SqlBulkCopy bulkCopy = new SqlBulkCopy(connStr);

bulkCopyDestinationTableName = "T_PhoneInfo";//设置数据库中对象的表名

//设置数据表table和数据库中表的列对应关系

bulkCopyColumnMappingsAdd("startNum", "FStartNum");

bulkCopyColumnMappingsAdd("numArea", "FNumArea");

bulkCopyColumnMappingsAdd("numType", "FNumType");

bulkCopyWriteToServer(table);//将数据表table复制到数据库中

TimeSpan ts = DateTimeNow - startTime;

MessageBoxShow("共导入" +tableRowsCount+ "条数据,总共花费时间:" + tsToString());

}

}

catch (IOException ex)

{

MessageBoxShow(exMessage);

}

catch (Exception ex)

{

MessageBoxShow(exMessage);

}

}

以上就是关于linux数据库查询的时候报at java.io.UnixFileSystem.createFileExclusively(Native Method)全部的内容,包括:linux数据库查询的时候报at java.io.UnixFileSystem.createFileExclusively(Native Method)、有哪些方法可以改善 MySQL 的 IO 瓶颈问题、主机sql数据库占用磁盘IO读写过高,怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9356169.html

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

发表评论

登录后才能评论

评论列表(0条)

保存