看错误是文件生成错了,和数据库没关系吧。
可能是:
拟生成的文件已存在,被其他程序使用;(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读写过高,怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)