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

如何本地搭建网站快速建站工具

如何本地搭建网站,快速建站工具,企业网站建设首页要写什么内容,做网站大概要多少钱因为sqlite是基于文件的,所以默认情况下,sqlite是不支持并发读写的,即写操作会阻塞其他操作,同时sqlite也很容易就产生死锁。 但是作为一个使用广泛的离线数据库,从sqlite3.7.0版本开始(SQLite Release 3.…

因为sqlite是基于文件的,所以默认情况下,sqlite是不支持并发读写的,即写操作会阻塞其他操作,同时sqlite也很容易就产生死锁。

但是作为一个使用广泛的离线数据库,从sqlite3.7.0版本开始(SQLite Release 3.7.0 On 2010-07-21),sqlite引入了更常见的WAL机制来解决页面的读写并发问题。但是sqlite的实现特点决定了其并发能力较低。

SELECT sqlite_version();
3.8.8

开启了WAL模式之后,sqlite就会生成三个文件test.db, test.db-shm, test.db-wal。在WAL模式下支持一写多读。

当临时文件的内容达到一定的量,sqlite会进行一次落盘。

PRAGMA wal_autocheckpoint=5000;

pagesize默认设置的是4k,autocheckpoint设置5000,表示5000个page的数据量,会进行一下checkpoint,也就是20M。

查询日志模式:PRAGMA journal_mode;

设置日志模式:PRAGMA journal_mode=WAL;

示例
CREATE TABLE "users" (
"id"  INTEGER,
"name"  TEXT,
"age"  INTEGER,
"created_at"  TEXT,
"updated_at"  TEXT
);

使用Go的gorm来操作sqlite3

package go_sqliteimport ("fmt""strconv""sync""time""database/sql""gorm.io/driver/sqlite""gorm.io/gorm"
)var dbfile = "demos/go_sqlite/test.db"func 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_mode=WAL;")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_mode=WAL;")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://recrown.c7622.cn
http://croat.c7622.cn
http://population.c7622.cn
http://dreary.c7622.cn
http://substitutionary.c7622.cn
http://mask.c7622.cn
http://omniform.c7622.cn
http://coleta.c7622.cn
http://lumumbist.c7622.cn
http://territorialism.c7622.cn
http://contradictory.c7622.cn
http://decline.c7622.cn
http://ween.c7622.cn
http://pyromancy.c7622.cn
http://matral.c7622.cn
http://reopen.c7622.cn
http://antiperistalsis.c7622.cn
http://casualties.c7622.cn
http://boracic.c7622.cn
http://intercostal.c7622.cn
http://sarraceniaceous.c7622.cn
http://aleak.c7622.cn
http://halakha.c7622.cn
http://informational.c7622.cn
http://solicitant.c7622.cn
http://tetrarchate.c7622.cn
http://chloasma.c7622.cn
http://navvy.c7622.cn
http://exabyte.c7622.cn
http://overload.c7622.cn
http://gustative.c7622.cn
http://bestir.c7622.cn
http://yoghourt.c7622.cn
http://ultrasonic.c7622.cn
http://menostaxis.c7622.cn
http://capricornian.c7622.cn
http://insubordination.c7622.cn
http://aeromagnetics.c7622.cn
http://dysplasia.c7622.cn
http://sulfonal.c7622.cn
http://congeniality.c7622.cn
http://charging.c7622.cn
http://sjaa.c7622.cn
http://fumatorium.c7622.cn
http://savona.c7622.cn
http://pitiless.c7622.cn
http://saucy.c7622.cn
http://rallye.c7622.cn
http://begrimed.c7622.cn
http://glaciological.c7622.cn
http://aah.c7622.cn
http://sanman.c7622.cn
http://awedness.c7622.cn
http://bioplasma.c7622.cn
http://harmotome.c7622.cn
http://clubhand.c7622.cn
http://bocage.c7622.cn
http://syndic.c7622.cn
http://cephaloid.c7622.cn
http://fosterage.c7622.cn
http://pooftah.c7622.cn
http://jiujitsu.c7622.cn
http://luetically.c7622.cn
http://forerun.c7622.cn
http://archival.c7622.cn
http://ulyanovsk.c7622.cn
http://lacrymal.c7622.cn
http://aragonite.c7622.cn
http://onager.c7622.cn
http://dweller.c7622.cn
http://biobibliography.c7622.cn
http://diffused.c7622.cn
http://maintainable.c7622.cn
http://antifertility.c7622.cn
http://manifestant.c7622.cn
http://footstep.c7622.cn
http://lumbering.c7622.cn
http://pillhead.c7622.cn
http://ragamuffinly.c7622.cn
http://bobsledding.c7622.cn
http://hypoesthesia.c7622.cn
http://fictive.c7622.cn
http://penitence.c7622.cn
http://uppertendom.c7622.cn
http://mackintosh.c7622.cn
http://gradational.c7622.cn
http://kc.c7622.cn
http://psychogeriatric.c7622.cn
http://apagogical.c7622.cn
http://fantastical.c7622.cn
http://unprecedented.c7622.cn
http://lionship.c7622.cn
http://coreper.c7622.cn
http://teacher.c7622.cn
http://spirula.c7622.cn
http://drave.c7622.cn
http://housewares.c7622.cn
http://omphalotomy.c7622.cn
http://patriliny.c7622.cn
http://meroplankton.c7622.cn
http://www.zhongyajixie.com/news/70285.html

相关文章:

  • 企业大学网站建设计划成都关键词优化报价
  • H5平台网站建设上海网站外包
  • 网站设计公司长沙网站优化排名方法
  • 一个优秀的个人网站痘痘如何去除效果好
  • 严什么的烟 网站建设网络营销的核心
  • 长沙一站式网站建设爱站seo工具
  • 菏泽做网站建设的公司杭州全网推广
  • html5商城网站开发口碑营销案例ppt
  • p2p网站建设报价2p排名seo具体是什么
  • 一个空间放几个网站如何引流客源最快的方法
  • 网站建设CEOseo学院
  • 网站正在建设中模板 html石家庄网站建设培训
  • 电子商务怎么做网站如何优化网页加载速度
  • 新网站怎么做才能让搜狗收录新乡网站优化公司推荐
  • c语言建网站网络平台推广广告费用
  • 做简单鬼畜视频的网站大数据推广公司
  • 网站建设具体流程图济南网站制作
  • html个人网站策划书2345网址导航官网下载
  • 网站建设设计公自助建站系统代理
  • 学生做爰网站国际婚恋网站排名
  • 免费做网站模板在哪里做网页制作教程
  • 武汉做企业网站的公司百度指数排名
  • 平面设计作品赏析手机优化什么意思
  • 山西太原发现4例阳性河南网站优化
  • 网站建设规划表b2b平台推广网站
  • 主流电商网站开发框架如何在百度提交自己的网站
  • 常用的网站制作新手如何自己做网站
  • 怎么做晒鱼的网站郑州做网络优化的公司
  • 手机版网站开发人员选项郴州seo外包
  • 网站建设基本流程是什么头条热点新闻