当前位置: 首页 > news >正文

普洱建设单位网站深圳建设网站推荐

普洱建设单位网站,深圳建设网站推荐,好用的外贸网站,营销策划公司是干嘛的因为sqlite是基于文件的#xff0c;所以默认情况下#xff0c;sqlite是不支持并发读写的#xff0c;即写操作会阻塞其他操作#xff0c;同时sqlite也很容易就产生死锁。 但是作为一个使用广泛的离线数据库#xff0c;从sqlite3.7.0版本开始#xff08;SQLite Release 3.…因为sqlite是基于文件的所以默认情况下sqlite是不支持并发读写的即写操作会阻塞其他操作同时sqlite也很容易就产生死锁。 但是作为一个使用广泛的离线数据库从sqlite3.7.0版本开始SQLite Release 3.7.0 On 2010-07-21sqlite引入了更常见的WAL机制来解决页面的读写并发问题。但是sqlite的实现特点决定了其并发能力较低。 SELECT sqlite_version(); 3.8.8开启了WAL模式之后sqlite就会生成三个文件test.db, test.db-shm, test.db-wal。在WAL模式下支持一写多读。 当临时文件的内容达到一定的量sqlite会进行一次落盘。 PRAGMA wal_autocheckpoint5000;pagesize默认设置的是4kautocheckpoint设置5000表示5000个page的数据量会进行一下checkpoint也就是20M。 查询日志模式PRAGMA journal_mode; 设置日志模式PRAGMA journal_modeWAL; 示例 CREATE TABLE users ( id INTEGER, name TEXT, age INTEGER, created_at TEXT, updated_at TEXT );使用Go的gorm来操作sqlite3 package go_sqliteimport (fmtstrconvsynctimedatabase/sqlgorm.io/driver/sqlitegorm.io/gorm )var dbfile demos/go_sqlite/test.dbfunc Run() {gormDB, sqlDB, err : InitDB()if err ! nil {panic(err)}defer sqlDB.Close()users : []User{}for i : 0; i 1000; i {user : User{Name: user_ strconv.Itoa(i),Age: uint8(i % 100),CreatedAt: time.Now().Unix(),UpdatedAt: time.Now().Unix(),}users append(users, user)}err BatchInsertUsers(gormDB, users)if err ! nil {panic(err)}users, err GetUsers(gormDB)if err ! nil {panic(err)}fmt.Println(len(users))fmt.Println(users[0]) }type User struct {ID uintName stringAge uint8CreatedAt int64UpdatedAt int64 }func InitDB() (*gorm.DB, *sql.DB, error) {gormDB, err : gorm.Open(sqlite.Open(dbfile), gorm.Config{})if err ! nil {return nil, nil, err}sqlDB, _ : gormDB.DB()gormDB.Exec(PRAGMA journal_modeWAL;)sqlDB.SetMaxIdleConns(10)sqlDB.SetMaxOpenConns(100)sqlDB.SetConnMaxLifetime(time.Hour)return gormDB, sqlDB, nil }func BatchInsertUsers(gormDB *gorm.DB, users []User) error {batchSize : 100batchCount : (len(users) batchSize - 1) / batchSizefor i : 0; i batchCount; i {start : i * batchSizeend : (i 1) * batchSizeif end len(users) {end len(users)}batch : users[start:end]tx : gormDB.Begin()if err : tx.Error; err ! nil {return err}if err : tx.Create(batch).Error; err ! nil {tx.Rollback()return err}if err : tx.Commit().Error; err ! nil {return err}}return nil }func GetUsers(gormDB *gorm.DB) ([]User, error) {var users []Usererr : gormDB.Find(users).Errorif err ! nil {return nil, err}return users, nil }并发测试 var wg sync.WaitGroupfunc Run2() {gormDB, err : gorm.Open(sqlite.Open(dbfile), gorm.Config{})if err ! nil {panic(failed to connect database)}gormDB.Exec(PRAGMA journal_modeWAL;)sqlDB, _ : gormDB.DB()sqlDB.SetMaxIdleConns(10)sqlDB.SetMaxOpenConns(100)wg.Add(2000)// 并发写入 1000 条数据for i : 0; i 1000; i {go func(i int) {defer wg.Done()err : gormDB.Transaction(func(tx *gorm.DB) error {user : User{Name: fmt.Sprintf(user_%d, i)}result : tx.Create(user)return result.Error})if err ! nil {fmt.Printf(failed to write data: %v\n, err)}}(i)}// 并发读取数据for i : 0; i 1000; i {go func() {defer wg.Done()var users []Usererr : gormDB.Transaction(func(tx *gorm.DB) error {result : tx.Find(users)return result.Error})if err ! nil {fmt.Printf(failed to read data: %v\n, err)} else {fmt.Printf(read %d records\n, len(users))}}()}wg.Wait()fmt.Println(done) } 参考 https://mp.weixin.qq.com/s/9Y1EfzM5cups9oklByAW5Q https://mp.weixin.qq.com/s/4AhMBJaZ4NZqfqcoPduXjg
http://www.w-s-a.com/news/293896/

相关文章:

  • 甘肃省铁路投资建设集团有限公司网站域名怎么实名认证
  • 企业网站建设的层次返利网站建设
  • 竞价单页网站制作中小企业网站建设问题
  • 响应式网站源码学校网站制作多少钱
  • 营销型网站建设需要懂什么网站建站四件套是什么
  • 廊坊哪里有制作手机网站的区块链开发语言
  • 找建设项目的网站装企工长网站开发
  • 戴尔网站建设成功方正网站制作
  • 怎么买网站域名wordpress 视频站模版
  • 厦门官网建设公司杨和关键词优化
  • 怎么做网约车seo自动优化软件下载
  • 遵义市住房和城乡建设局官方网站网站备案 自己的服务器
  • 分销系统价格多少北京网站优化平台
  • 怎样做旅游公司的网站泉州网站建设方案优化
  • 手机网站页面范例个人网站做淘宝客违规
  • 做一套网站开发多少钱SEO做得最好的网站
  • 咸宁做网站的公司那家便宜福建建设注册管理中心网站
  • 网站建设工作汇报黑科技广告推广神器
  • 淘宝做首页热点的什么网站徐州建设安全监督网站
  • 正规的镇江网站建设广州有什么好玩的东西
  • 丹阳网站设计公司网站开发 0755
  • 百度网页版浏览器网址找文网优化的技术团队
  • 信息网站怎么做做儿童网站赚钱吗
  • 帝国cms 网站迁移个人网站备案备注
  • 青岛做网站推广怎样做网站才不能被攻破
  • 使用网站模板快速建站教案杂志wordpress主题 无限加载
  • 南宁南宁做网站南安网络推广
  • 旌阳移动网站建设微网站 杭州
  • 合肥网站开发如何用VS2017做网站
  • 网站 制作公司福州企业建站软件